typescript ?修飾子 と undefined の違い

    address?: string;

    address: string | undefined;

を同じと認識されている方が多いようですが、以下のようにキーが存在するかどうか?という点で違いがあります。

interface Person {
    name: string;
    age: number;
    address?: string;
}

const person1:Person = { name:"yamada", age:20 };
const person2:Person = { name:"yamada", age:20, address: undefined };

console.log(person1.address);   // undefined
console.log(person2.address);   // undefined

console.log(Object.keys(person1));  // [ 'name', 'age' ]
console.log(Object.keys(person2));  // [ 'name', 'age', 'address' ]

引用: https://oita.oika.me/2021/12/01/timeleap-typescript

No.2531
07/11 10:32

edit