联合类型
const number = string | number;const
type类型别名
type
interface
type类型别名可以和 interface互换
interface在这种情况下没法替代 type类型别名
type number = string | numberconst total: number = '10'
interface
interface Person {name: string}
type & interface的区别
- interface没有办法实现 Utility Type
typeof
- js中的 typeof,是运行时运行的,runtime
- ts中的 typeof是静态环境下运行的
Utility Type
keyof
type Person = {name: stirng,age: number}type personKeys = keyof Person
Partial
对一个类型进行编辑
type Person = {name: string;age: number}const user: Partial<Person> = {}
Partial的实现
type Partial<T> = {[P in keyof T]?:T[P]}
Omit
删除某个属性
如果再声明删除的属性,就会报错
Omit操作键值对
const user: Omit<Person, 'name'> = {age: 2}const user: Omit<Person, 'name' | 'age'> = {}
Omit的实现
type Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>;
Exclude
过滤,返回剩下的类型
exclude操作联合类型
type Person = {name: stirng,age: number}type PersonKeys = keyof Person;type Age = Exclude<PersonKeys, 'name'>
Exclude的实现
type Exclude<T, U> = T extends U ? never : T;
Pick
type Person = {name: stirng,age: number}type personOnlyName = Pick<Person, 'name'>
Pick的实现
type Pick<T, K extends keyof T> = {[P in K]: T[P]}
