потому-что инициализировать значения нужно, в жс можно без этого обойтись, поэтому есть undefined
но на жс инициализировать значения получается громозко
например
type Foo = { a: null | string, b: null | string }
const foo: Foo = {a: null, b: null }
а если там 10 проперти,
поэтому вот так проще
type Foo = { a?: string, b?: string }
const foo: Foo = { }