实用类型 Utility Types
实用类型说明
- 实用类型是仅在开发过程中使用的TS提供的一系列辅助类型
- TS为编译时语法,因此 此实用类型 无法在JS运行时生效
常用实用类型
Partial
- 可以将已有对象结构的属性全部设置为 可选属性
- 使用在 定义之初 无法确定具体结构的对象上
- 区别于 直接使用
any 或者 object,这两种类型无有效类型提示。而采用Partial的泛型传参,可以得到有效的结构提示,
interface OptionSome {
name: string;
age: number;
}
function getPerson(obj: OptionSome): OptionSome {
let _obj: Partial<OptionSome> = {};
if (obj.name != "Nicky") {
_obj.name = obj.name;
}
else {
_obj.name = "NoName";
}
_obj.age = obj.age;
return _obj as OptionSome;
}
Readonly
- 使已有的对象结构赋值后不可再更改
- 对比
const只能固定基础类型,引用类型依旧会改变;Readonly类型的对象结构初次赋值后始终不会改变
interface OptionSome {
name: string;
age: number;
}
const person: OptionSome = {
name: "Jack",
age: 25,
};
person.name = "Nicky";
const person2: Readonly<OptionSome> = {
name: "Jack",
age: 25,
};
person2.name = 'Nicky';