映射类型(Mapped Types)是 TypeScript 中一种基于现有类型创建新类型的高级特性。它允许开发者以声明式的方式根据现有类型定义新的类型。
{ [P in KeyType]: ValueType }
interface Person {
name: string;
age: number;
email: string;
}
type ReadonlyPerson = { readonly [P in keyof Person]: Person[P] };
// type ReadonlyPerson = {
// readonly name: string;
// readonly age: number;
// readonly email: string;
// }
type Partial<T> = { [P in keyof T]?: T[P] };
type Required<T> = { [P in keyof T]-?: T[P] };
interface Person {
name: string;
age: number;
email?: string;
}
type PartialPerson = Partial<Person>;
// type PartialPerson = {
// name?: string;
// age?: number;
// email?: string;
// }
type RequiredPerson = Required<Person>;
// type RequiredPerson = {
// name: string;
// age: number;
// email: string;
// }
总之,映射类型是 TypeScript 中一个非常强大的特性,它可以帮助开发者以声明式的方式定义新的类型,大大提高代码的灵活性和可维护性。通过合理使用映射类型,开发者可以编写出更加健壮和可扩展的代码。