考慮以下打字稿枚舉:enum MyEnum { A, B, C };如果我想要另一個類型是該枚舉的鍵的聯合字符串,則可以執行以下操作:type MyEnumKeysAsStrings = keyof typeof MyEnum; // "A" | "B" | "C"這是非常有用的。現在,我想創建一個通用類型,以這種方式對枚舉進行通用操作,這樣我可以改為:type MyEnumKeysAsStrings = AnyEnumKeysAsStrings<MyEnum>;我想正確的語法是:type AnyEnumKeysAsStrings<TEnum> = keyof typeof TEnum; // TS Error: 'TEnum' only refers to a type, but is being used as a value here.但這會產生編譯錯誤:“'TEnum'僅引用類型,但在此處被用作值?!边@是意外和悲傷的。我可以通過以下方式通過使用泛型聲明的右側刪除typeof并將其添加到特定類型的聲明中的type參數中來解決此問題:type AnyEnumAsUntypedKeys<TEnum> = keyof TEnum;type MyEnumKeysAsStrings = AnyEnumAsUntypedKeys<typeof MyEnum>; // works, but not kind to consumer. Ick.不過,我不喜歡這種解決方法,因為這意味著使用者必須記住在通用類型上仔細地指定typeof。有什么語法可以讓我指定我最初想要的通用類型,以便對消費者友好?
添加回答
舉報
0/150
提交
取消