假设我有一组有效的键名称
const validKeys = ['a', 'b', 'c']
Run Code Online (Sandbox Code Playgroud)
如何创建仅接受这些键的对象类型?这不起作用:
interface MyObject {
[key in validKeys]: number // for example
}
Run Code Online (Sandbox Code Playgroud)
您可以使用const断言(在 typescript 3.4 中添加)来保留数组项的文字类型:
const validKeys = ['a', 'b', 'c'] as const;
type Keys = (typeof validKeys)[number]; // "a" | "b" | "c"
type MyObject = { [key in Keys]: number } // { a: number; b: number; c: number; }
Run Code Online (Sandbox Code Playgroud)
如果您使用较旧的打字稿版本(> = 3.0),您可以添加小实用函数,它将参数转换为文字元组:
const tuple = <T extends string[]>(...args: T): T => args;
const validKeys = tuple('a', 'b', 'c'); // ["a", "b", "c"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1817 次 |
| 最近记录: |