[英]How to define return type for a function that adds keys to an object dynamically?
[英]How to define a type of object with keys of values of enum
export const enum Enum1{
key1='value1',
key2='value2',
key3='value3',
}
type ObjType = {
[Key in keyof Enum1]: {
some_object: number
}
}
export const obj1:ObjType ={
[Enum1.key1]:{some_object:123},
[Enum1.key2]:{some_object:123},
[Enum1.key3]:{some_object:123}
}
上面的代碼產生錯誤:
錯誤:(145,3)TS2322:輸入'{[Enum1.key1]:{some_object:number; }; [Enum1.key2]:{some_object:number; }; [Enum1.key3]:{some_object:number; }; ''不能賦值為'Obj'。 對象文字只能指定已知屬性,'[enum1.key1]'在類型'Obj'中不存在。
我想定義一個類型( ObjType
),它的鍵是Enum1
枚舉的所有值。
我怎樣才能做到這一點? 如果不可能,那么強制執行obj1
鍵包含所有Enum1
值的正確方法是什么?
你很親密 你不想要keyof Enum1
。 keyof Enum1
本質上keyof
一個枚舉值的keyof
,因為這是一個字符串枚舉,它將是keyof string
。 Enume1
類型可以看作是所有enum memebers的聯合,所以你可以使用它:
export const enum Enum1{
key1='value1',
key2='value2',
key3='value3',
}
type ObjType = {
[Key in Enum1]: {
some_object: number
}
}
export const obj1:ObjType ={
[Enum1.key1]:{some_object:123},
[Enum1.key2]:{some_object:123},
[Enum1.key3]:{some_object:123}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.