Mapped Types Modifiers
揺れがある
「Mapped Type Modifiers」とか
ref「Mapping Modifiers」とか
ref readonly
や ?
のことをmodifier(修飾子)と呼んでて、
「Mapped Types Modifiers」の様に呼んだりする
以下の様に、constraint typeに keyof
が付いている時に使える
[]
の中で keyof
を付けている
tstype A<T> = { [P in keyof T]: string };
extends
の中で、 keyof
の制約がある
tstype Pick<T, K extends keyof T> = { [P in K]: T[P]; }
readonly
や ?
を付ける
tstype Partial<T> = {
[P in keyof T]?: T[P];
};
こうなる
tstype A = Partial<{ a: number; b: number }>;
// 以下と同じ
// type A = {
// a?: number | undefined;
// b?: number | undefined;
// };
ただの [..]?
じゃなくて、 [..]+?
とも書けるが、全く同じ意味になる
?
を取り除く
-
を付ける
tstype Required<T> = {
[P in keyof T]-?: T[P];
};
こうなる
tstype A = Required<{ a?: number; b?: number | undefined }>;
// 以下と同じ
// type A = { a: number; b: number; };
readonly
を取り除く
-
を付ける
tstype Mutable<T> = {
-readonly [P in keyof T]: T[P];
};
参考