[英]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.