メインコンテンツまでスキップ

オブジェクトの型のオプションプロパティ (optional property)

TypeScriptで、オブジェクトプロパティのオプショナルを型付けするには、プロパティ名の後ろに?を書きます。

ts
type Size = {
width?: number;
};
ts
type Size = {
width?: number;
};

オプションプロパティを持ったオブジェクトの型には、そのオプションプロパティを持たないオブジェクトを代入できます。

ts
const size: Size = {}; // OK
ts
const size: Size = {}; // OK

また、オプションプロパティの値がundefinedのオブジェクトも代入できます。

ts
const size: Size = {
width: undefined,
}; // OK
ts
const size: Size = {
width: undefined,
}; // OK

しかし、オプションプロパティの値がnullの場合は代入できません。

ts
const size: Size = {
width: null,
Type 'null' is not assignable to type 'number | undefined'.2322Type 'null' is not assignable to type 'number | undefined'.
};
ts
const size: Size = {
width: null,
Type 'null' is not assignable to type 'number | undefined'.2322Type 'null' is not assignable to type 'number | undefined'.
};

ただしstrictNullChecksを無効にしている場合はnullも代入できるようになります。

strictNullChecksがfalseの場合
ts
const size: Size = {
width: null,
};
strictNullChecksがfalseの場合
ts
const size: Size = {
width: null,
};

関連情報

📄️ オプショナルチェーン

JavaScriptのオプショナルチェーン?.は、オブジェクトの参照がnullやundefinedの場合でも、エラーを起こさずにプロパティを参照できる安全な方法です。

📄️ strictNullChecks

null・undefinedのチェックを厳しくする