TypeScript里的工具类型Partial的理解用法
Partial 可以快速把某个接口类型中定义的属性类型变成可选的(Optional):
interface People {
age: number;
name: string;
}
const Jerry:People = {
age: 10,
name: 'Jerry'
};
const Tom: People = {
name: 'Tom'
}
上述代码会发生编译时错误:
1.ts:11:7 - error TS2741: Property ‘age’ is missing in type ‘{ name: string; }’ but required in type ‘People’.
解决方法:
interface People {
age: number;
name: string;
}
const Jerry:People = {
age: 10,
name: 'Jerry'
};
// 相当于: type AnonymousPeople= { age?: number; name?: string; }
type AnonymousPeople = Partial<People>;
const tom:AnonymousPeople = {
name: 'Tom'
};
编译之后:
var Jerry = {
age: 10,
name: 'Jerry'
};
var tom = {
name: 'Tom'
};
其实Partial源码很简单
利用keyof 产生枚举类型,,in 使用枚举类型遍历
type Partial<T> = { [P in keyof T]?: T[P] };
说白了Partial可以让接口定义的类型变成包含可选的