TypeScript学习(八):Handbook -> Typeof Type Operator & Indexed Access Types

211 阅读1分钟

typeof

typeof 操作符可以得到一些变量或者属性的类型,但是更多情况下需要与别的操作符一起使用。

ReturnType 的泛型为必须为类型

type Predicate = (x: unknown) => boolean
// type 为 boolean
type K = ReturnType<Predicate>

否则,需要配合 typeof 操作符。因为,泛型参数必须是一个类型,而 f 函数是一个值。

function f(){
    return {x:10, y:3}
}

type P = ReturnType<typeof f>

Indexed Access Types

通过索引寻找某一类型的特定属性的类型

type Person = {age: number; name: string; alive: boolean}

type I1 = Person[keyof Person]

number

使用number获取数组的元素,结合 typeof 获取数组元素的属性值

const MyArray = [
    {name:"Alice", age: 15},
    {name:"Bob", age: 23}
]

// 索引为 number ---> 理解为 MyArray[number] 拿到一个数组元素
type Person = typeof MyArray[number]

// 类型为 number
type Age = typeof Person["age"]

// 同 Age
type Age1 = typeof MyArray[number]["age"]

参考

www.typescriptlang.org/docs/handbo…