# 索引访问类型

我们可以使用索引访问类型来查找另一类型上的特定属性:

type Person = { age: number, name: string, alive: boolean };
type Age = Person["age"];
// type Age = number;

还可以使用联合、keyof

type I1 = Person["age" | "name"];
// I1 = number | string;
type I2 = Person[keyof Person];
// I2 - number | string | alive;

可以使用 number 来获取数组元素类型

const MyArray = [
  { name: "Alice", age: 15 },
  { name: "Bob", age: 23 },
  { name: "Eve", age: 38 },
];
type IMyArray = typeof MyArray;
// IMyArray = {name: string; age: number}[]
type IMyArrayItem = typeof MyArray[number];
// IMyArrayItem = {name: string; age: number}

索引的参数必须是类型,而不是变量

const key = "age";
type Age = Person[key];

以上是错误的,会提示类型 key 不存在,相应的应该修改为:

type key = "age";
type Age = Person[key];