Typescriptインターフェースのデフォルト値 質問する

Typescriptインターフェースのデフォルト値 質問する

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にするように指示できますか?これを実現するにはどうすればいいでしょうか?

いいえ。インターフェースや型エイリアスにはデフォルト値を指定できません。これらはコンパイル時のみであり、デフォルト値には実行時サポートが必要です。

代替

ただし、指定されていない値はundefinedJavaScript ランタイムでデフォルトになります。そのため、それらをオプションとしてマークできます。

interface IX {
  a: string,
  b?: any,
  c?: AnotherType
}

そして、これを作成するときに提供する必要があるのは、次のものだけですa:

let x: IX = {
    a: 'abc'
};

必要に応じて値を指定できます。

x.a = 'xyz'
x.b = 123
x.c = new AnotherType()

おすすめ記事