typescript获取数组的类型

在typescript中,获取数组中的子项类型

有以下代码:

1
2
3
4
5
6
const array = ['a', 'b', 'c'];
type ArrayType = typeof array; // string[];
type ItemType = ArrayType[number]; // string

// 简写
type NextItemType = (typeof array)[number];

第一次看到(typeof array)[number]的时候,没法理解其中的[number]是什么意思,仔细思考下来,可以理解为(typeof array)[0],这是取数组中的第一个元素的类型,那么引申开来,0可以用number表示,那么(typeof array)[number]去的就是array的所有项目的类型,对于上面这个例子,不管是用(typeof array)[number]还是(typeof array)[0]的结果都是一样的,但是下面这个例子,就不一样了

1
2
3
const array = ['a', '1', true];
type ItemType = (typeof array)[number]; // string | number | boolean
type ItemTypeString = (typeof array)[0]; // string