映射類型
現有類型如下
interface Person {
name: string;
age: number;
}
一個常見的任務是將一個已知的類型每個屬性都變為可選的,或者是想要某一類型的只讀版本如下:
interface PersonPartial {
name?: string;
age?: number;
}
interface PersonReadonly {
readonly name: string;
readonly age: number;
}
TypeScript提供了從舊類型中創建新類型的一種方式 — 映射類型。 在映射類型里,新類型以相同的形式去轉換舊類型里每個屬性。 例如,你可以令每個屬性成為 readonly類型或可選的。 下面是一些例子:
type Readonly<T> = {
readonly [P in keyof T]: T[P];
}
type Partial<T> = {
[P in keyof T]?: T[P];
}
使用的時候像這樣
type PersonPartial = Partial<Person>;
type ReadonlyPerson = Readonly<Person>;
這樣我們就可以簡單的轉換成某個特定需求的類型了