Skip to content
On this page

在ts中的关键字

keyof

keyof官方文档解释

总的来说,就是可以抽取一个对象中的key,来形成一个字符串或者数字的集合

ts
type Person = {
  name: string;
  age: number;
  gender: number;
};

type Keys = keyof Person

// 等价于
type Keys = 'name' | 'age' | 'gender'

1
2
3
4
5
6
7
8
9
10
11

typeof

typeof关键字可以在一个已声明的变量中提取出类型

ts
const name = '张三'  // ts的自动识别类型功能,可以识别name:string
type TName = typeof name // 等价于 TName = string
1
2

never

never永远不会有返回结果,或者只会抛出错误

具体的作用可以参考这篇文章ts-never

extends

extends 关键字在js中也有用到,用于继承一个类,而在ts的类型声明中,也能用到extends ,用法在于继承一个类型,而除此之外,extends还有更强大的作用,可以用于做一些判断,比如下面这样:

ts
type ReverseStringNumber<T> = T extends string ? number : string;
type s = 'string'
type n = ReverseStringNumber<s> // number
1
2
3

infer

infer 表示在 extends 条件语句中待推断的类型变量

ts
type ParamType<T> = T extends (arg: infer P) => any ? P : T;

interface User {
  name: string;
  age: number;
}

type Func = (user: User) => void;

type Param = ParamType<Func>; // Param = User
type AA = ParamType<string>; // string
1
2
3
4
5
6
7
8
9
10
11

ts -infer