索引访问类型

通过索引访问类型可以查找另外一个类型上的特定属性

可以使用联合、keyof 或者其他类型

1
2
3
4
5
6
7
8
9
10
11
type Person = { age: number; name: string; alive: boolean };

type I1 = Person["age" | "name"];
// type I1 = string | number

type I2 = Person[keyof Person];
// type I2 = string | number | boolean

type AliveOrName = "alive" | "name";
type I3 = Person[AliveOrName];
// type I3 = string | boolean

作为索引的只能是类型不能使用 const 创建一个变量引用

1
2
3
4
5
6
const key = "age";
type Age = Person[key];

// Type 'key' cannot be used as an index type.
// 'key' refers to a value, but is being used as a type here. Did you mean 'typeof key'?

可以使用类型别名实现类似的重构

1
2
3
type key = "age";
type Age = Person[key];

作者

徐云飞

发布于

2022-10-27

更新于

2023-02-05

许可协议

评论