给定一个接口,我们可以访问其特定密钥类型的属性,例如
string
:
interface AB {
a: number;
b: boolean;
}
type PropertiesByString = AB[keyof AB & string]
这是有效的,因为
keyof AB & string
是 "a" | "b"
,它们都是 AB
的有效键。同样的逻辑不适用于数组:
const MyArray = [
{ name: "Alice", age: 15 },
{ name: "Bob", age: 23 },
{ name: "Eve", age: 38 },
];
type Person = typeof MyArray[number];
代码是有效的,但这里的
number
包括4
等等。为什么这里允许使用number
?