TypeScript - 工具类型
在 TypeScript 中,工具类型(Utility Types)是预定义的泛型类型,用于基于已有类型创建新类型。它们可以帮助你更高效地进行类型转换、增强代码的可读性,并减少重复代码。这些工具类型广泛应用于大型项目中,特别是在处理复杂类型结构时。
Partial 类型
Partial<T> 类型将类型 T 的所有属性变为可选。这在你需要部分更新对象时非常有用。
在下面的示例中,我们创建了包含一些可选属性的 Type。之后,我们使用 Partial 工具类型创建了一个 partialType 对象。可以看到,我们尚未初始化 partialType 对象的所有属性,因为所有属性都是可选的。
type Type = {
prop1: string;
prop2: string;
prop3: number;
prop4?: boolean;
};
let partialType: Partial<Type> = {
prop1: "Default",
prop4: false,
};
console.log("The value of prop1 is " + partialType.prop1);
console.log("The value of prop2 is " + partialType.prop2);
输出结果:
The value of prop1 is Default
The value of prop2 is undefined
Required 类型
Required<T> 类型将类型 T 的所有可选属性变为必选。
在下面示例中,Type 包含 prop3 可选属性。使用 Required 工具类型转换 Type 后,prop3 也变为必需属性。如果我们在创建对象时未为 prop3 赋值,则会生成编译错误。
type Type = {
prop1: string;
prop2: string;
prop3?: number;
};
let requiredType: Required<Type> = {
prop1: "Default",
prop2: "Hello",
prop3: 40,
};
console.log("The value of prop1 is " + requiredType.prop1);
console.log("The value of prop2 is " + requiredType.prop2);
输出结果:
The value of prop1 is Default
The value of prop2 is Hello
Pick 类型
Pick<T, K> 类型允许你从类型 T 中选择特定的属性 K,构造一个新类型。
在下面的示例中,我们从 Type1 中选择了 color 和 id 属性,并使用 Pick 工具类型创建了新类型。可以看到,当我们尝试访问 newObj 的 size 属性时会报错,因为 newObj 对象的类型不包含 size 属性。
type Type1 = {
color: string;
size: number;
id: string;
};
let newObj: Pick<Type1, "color" | "id"> = {
color: "#00000",
id: "5464fgfdr",
};
console.log(newObj.color);
输出结果:
#00000