![](/img/trans.png)
[英]In Typescript, can I constrain the type of the value at a generic key?
[英]typescript How to constrain the key of a generic type to be string only
我想要一個通用類型OnlyStringKey<T>
如下所示。
//This line has no compile errors
let x: OnlyStringKey<{whatEverJustString1: 1, whatEverJustString2: '' }>;
//This line has error. Because key 2 is a number but a string
let x: OnlyStringKey<{whatEverJustString1: 1, 2: '' }>;
//This line has error too. Because key symbol.search is symbole but a string
let x: OnlyStringKey<{whatEverJustString1: 1, [Symbol.search]: '' }>;
我嘗試了幾種方法。 而且它們都不起作用
您可以將以下約束添加到OnlyStringKey
:
type OnlyStringKey<
T extends Record<string, any> & Record<number | symbol, never>
> = T
這將確保所有number
和symbol
鍵只能具有never
類型。
我不認為類型可以同時受到約束和通用,但您可能想要OnlyStringKey: Record<string, any> or OnlyStringKey:{ [key: string]: any }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.