問題一覧に戻る
上級高度な型
問題57: Mapped型の修飾子
Mapped型で+/-修飾子を使って、readonlyやoptionalを追加・削除する方法を学びます。既存の型から修飾子を取り除いたり、追加したりすることで、柔軟な型変換が可能になります。型の可変性を制御する高度なテクニックです。
// 修飾子を持つインターフェース
interface Person {
readonly name: string;
age?: number;
}
// 修飾子の削除
type Mutable<T> = {
readonly [P in keyof T]: T[P];
};
type Required<T> = {
[P in keyof T]?: T[P];
};