在ts中的关键字
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
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
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
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
2
3
4
5
6
7
8
9
10
11