オブジェクトの型のオプションプロパティ (optional property)
TypeScriptで、オブジェクトプロパティのオプショナルを型付けするには、プロパティ名の後ろに?
を書きます。
ts
typeSize = {width ?: number;};
ts
typeSize = {width ?: number;};
オプションプロパティを持ったオブジェクトの型には、そのオプションプロパティを持たないオブジェクトを代入できます。
ts
constsize :Size = {}; // OK
ts
constsize :Size = {}; // OK
また、オプションプロパティの値がundefined
のオブジェクトも代入できます。
ts
constsize :Size = {width :undefined ,}; // OK
ts
constsize :Size = {width :undefined ,}; // OK
しかし、オプションプロパティの値がnull
の場合は代入できません。
ts
constsize :Size = {Type 'null' is not assignable to type 'number | undefined'.2322Type 'null' is not assignable to type 'number | undefined'.: null, width };
ts
constsize :Size = {Type 'null' is not assignable to type 'number | undefined'.2322Type 'null' is not assignable to type 'number | undefined'.: null, width };
ただしstrictNullChecks
を無効にしている場合はnull
も代入できるようになります。
strictNullChecksがfalseの場合ts
constsize :Size = {width : null,};
strictNullChecksがfalseの場合ts
constsize :Size = {width : null,};
関連情報
📄️ オプショナルチェーン
JavaScriptのオプショナルチェーン?.は、オブジェクトの参照がnullやundefinedの場合でも、エラーを起こさずにプロパティを参照できる安全な方法です。
📄️ strictNullChecks
null・undefinedのチェックを厳しくする