typeScript内置工具类型,通俗易懂,例子解释(Record、Readonly、Required、Partial、Extract、Exclude、Pick、Omit、NonNullable..)
Record、Readonly、Required、Partial 是 TypeScript 中常用的内置工具类型,以下是它们的简单解释和使用示例:
Record:
Record 是一个构造类型,用于创建具有某种值类型的对象类型。
type MyRecord = Record<string, number>;
const myRecord: MyRecord = {
key1: 1,
key2: 2,
};
在这个例子中,MyRecord
是一个字符串到数字的映射,任何其他键值对都会导致类型错误。
Readonly:
Readonly 用于创建一个类型,其所有属性都被标记为只读。
type MyObject = {
prop: string;
};
type ReadOnlyMyObject = Readonly<MyObject>;
const obj: ReadOnlyMyObject = {
prop: "Hello",
};
obj.prop = "World"; // Error: 属性是只读的
在这个例子中,ReadOnlyMyObject
的 prop
属性不能被重新分配,尝试这样做会导致编译时错误。
Required:
Required 用于创建一个类型,其所有属性都变为必须的。
type MyObject = {
prop?: string;
};
type RequiredMyObject = Required<MyObject>;
const obj: RequiredMyObject = {
prop: "Hello", // OK
};
在这个例子中,RequiredMyObject
的 prop
属性现在是必须的,如果在实例化 RequiredMyObject
类型的对象时没有提供 prop
,将会导致编译时错误。
Partial:
Partial 用于创建一个类型,其所有属性都变为可选的。
type MyObject = {
prop: string;
};
type PartialMyObject = Partial<MyObject>;
const obj: PartialMyObject = {
prop: "Hello", // OK
// 没有 'prop' 也不会导致错误
};
在这个例子中,PartialMyObject
的 prop
属性现在是可选的,不提供 prop
也不会导致编译时错误。
评论已关闭