索引类型
keyof
keyof 操作符可以将对象中的所有键转换为对应字面量类型,然后再组合成联合类型。注意,这里并不会将数字类型的键名转换为字符串类型字面量,而是仍然保持为数字类型字面量。
interface Foo {
name: 1,
599: 2
}
// "name" | 599
type FooKeys = keyof Foo;
索引类型访问
在 JavaScript 中我们可以通过 `obj[expression]`` 的方式来动态访问一个对象属性(即计算属性),expression 表达式会先被执行,然后使用返回值来访问属性。而 TypeScript 中我们也可以通过类似的方式,只不过这里的 expression 要换成类型。
interface NumberRecord {
[key: string]: number;
}
type PropType = NumberRecord[string]; // number