

Size: a a a
interface A {
field?: number
}
let a1: A = {};
let a2: A = {field: undefined};
let a3: A = {field: 42};
a1.field // undefined
"field" in a1 // false
a2.field // undefined
"field" in a2 // true
"field" in object
на сравнение object["field"]
с undefined
и все стало прекрасно. За одним исключением.
interface B {
field: number | undefined
// field: undefined
// тоже является примером,
// но бесполезным практически.
}
let b1: B = {field: undefined};
let b2: B = {field: 42};
// А вот просто {} уже не является
// здесь валидным значением
// с точки зрения TS.
b1
- ведь поле-то у нее undefined
.