Readonly
需求: 构建一个对象模型,使得所有的属性都是可读。
interface IUser {
name: string;
age: number;
}
type ReadonlyUser = Readonly<IUser>;
Partial
将属性设置为可选属性。
type PartialUser = Partial<IUser>;
PartialUser is now { name?: string, age?: number }
Record
Record<K,T> 用于创建一个Map类型, 其中K是键,T是 Value
type UserRecord = Record<string, IUser>;
declare type Recordable<T = any> = Record<string, T>;
Creating Your Own Mapped Types
创建自定义类型, 不必受限于 Ts提供的类型。 在业务开发中可以进行全局设置,扩展自己的类型库。增强代码的类型安全。并减少代码重复量。
type Nullable<T> = { [P in keyof T]: T[P] | null };
//上述定义说明创建一个新的Nullable对象。并且T中的每个属性可以null.
declare type NonNullable<T> = T extends null | undefined ? never : T;
//创建一个T中的属性不为null的类型