typescript 学习
原始内置类型
除了 null 和 undefined ,原始内置类型和 js 类型的意思是一样的
类型查询操作符 typeof
泛型
Top Type => Bottom Type
- any - unknown - Top Type -
- Object - 顶级原型 -
- String - Boolean - Number - 装箱类型 -
- string - boolean - number - 基础类型 -
- 'pikachu' - true - 666 - 对应的字面量类型
void 返回值特点
Partial
生成一个新的类型,此类型与 T 的属性一值,其属性都是可选项
type Partial<T> = {
[P in keyof T]?: T[p]
}
Omit
忽略指定属性,创造一个新的类型
type Omit<T,K extends string | number | symbol> = {
[P in Exclude<keyof T,K>]:T[p]
}
Pick
挑选出需要的属性,创造一个新的类型
type Pick<T,K extends keyof T> = {
[P in K] : k[P]
}
Readonly
生成一个新的类型,此类型与 T 的属性一值,其属性都是只读选项
type Readonly<T> = {
readonly [P in keyof T]: T[P]
}
Required
生成一个新的类型,此类型与 T 的属性一值,其属性都是必选项
type Required<T> = {
required [P in keyof T]: T[P]
}
Record
将一个类型中的属性值 映射 到另一个类型
type Record <K extends string | number | symbol , T> = {
[P in K]:T
}
Exclude
若 T 是 U 的子类,返回 never 类型,否则 返回 T 类型
type Exclude<T , U> = T extends U ? never: T
Extract
与 Exclude 相反,若 T 是 U 的子类,返回 T,否则 返回 never
type Extract<T,U> = T extends U ? T :never
ReturnType
获取返回值类型
type ReturnType<T extends new (...args:any) => any> = T extends new (...args:infer P)=>any?P:never