TypeScript には次のインターフェースがあります。
interface IX {
a: string,
b: any,
c: AnotherType
}
その型の変数を宣言し、すべてのプロパティを初期化します
let x: IX = {
a: 'abc',
b: null,
c: null
}
その後、init関数で実際の値を割り当てます
x.a = 'xyz'
x.b = 123
x.c = new AnotherType()
しかし、オブジェクトを宣言するときに、各プロパティにデフォルトの null 値をたくさん指定し、後で実際の値に設定するのは嫌です。インターフェイスに、指定しないプロパティをデフォルトで null に設定するように指示できますか? これを実現するにはどうすればよいでしょうか:
let x: IX = {
a: 'abc'
}
コンパイラエラーは発生しません。現時点では
TS2322: 型 '{}' は型 'IX' に割り当てることができません。型 '{}' にプロパティ 'b' がありません。
ベストアンサー1
インターフェースに、指定していないプロパティをデフォルトでnullにするように指示できますか?これを実現するにはどうすればいいでしょうか?
いいえ。インターフェースや型エイリアスにはデフォルト値を指定できません。これらはコンパイル時のみであり、デフォルト値には実行時サポートが必要です。
代替
ただし、指定されていない値はundefined
JavaScript ランタイムでデフォルトになります。そのため、それらをオプションとしてマークできます。
interface IX {
a: string,
b?: any,
c?: AnotherType
}
そして、これを作成するときに提供する必要があるのは、次のものだけですa
:
let x: IX = {
a: 'abc'
};
必要に応じて値を指定できます。
x.a = 'xyz'
x.b = 123
x.c = new AnotherType()