簡體   English   中英

打字稿基於數組推斷對象鍵

[英]Typescript infer object keys based on array

我正在嘗試根據數組的值創建一個具有特定鍵的對象。

這是代碼:

type AllowedKeys = "foo" | "bar" | "baz"

interface Options {
    keys: AllowedKeys[]
}

interface AllTypesDeclaration {
    foo: string[];
    baz: object[];
    bar: number[];
}

function createObj(arg: Options): Pick<AllTypesDeclaration, typeof arg.keys[number]> {
    return {}
}

const myObj = createObj({ keys: ['baz'] })

// This should work:
myObj.baz

// This should fail:
myObj.foo
myObj.bar

如您所見,我嘗試使用Pick ,但這似乎不起作用。

演示: 這里

您將需要泛型,否則鍵的類型將不受輸入的限制。

function createObj<T extends AllowedKeys[]>(arg: { keys: T })
    : Pick<AllTypesDeclaration, typeof arg.keys[number]> {
    return {}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM