キー 'a'、'b'、または 'c' のみを持つオブジェクトを入力したいです。
したがって、次のように実行できます。
Interface IList {
a?: string;
b?: string;
c?: string;
}
Record
これらはすべてオプションです。これを1行で書けるかどうか疑問に思いました。
type List = Record<'a' | 'b' | 'c', string>;
唯一の問題は、すべてのキーを定義する必要があることです。そのため、
type List = Partial<Record<'a' | 'b' | 'c', string>>;
これは機能しますが、Partial を使用せずにこれを行うより良い方法があると思います。 Record 内でキーをオプションにする別の方法はありますか?
ベストアンサー1
のメンバーのオプション性を指定する方法はありませんRecord
。定義により必須です。
type Record<K extends keyof any, T> = {
[P in K]: T; // Mapped properties are not optional, and it's not a homomorphic mapped type so it can't come from anywhere else.
};
これが一般的なシナリオである場合は、独自のタイプを定義できます。
type PartialRecord<K extends keyof any, T> = {
[P in K]?: T;
};
type List = PartialRecord<'a' | 'b' | 'c', string>
PartialRecord
または、定義済みのマップされた型を使用して定義することもできます。
type PartialRecord<K extends keyof any, T> = Partial<Record<K, T>>