Open shhider opened 1 year ago
type = { aa: string }
不是指一个「有且仅有 aa 属性的 object」,而是所有「有 aa 属性的值」。因此:
{}
指代除了 null
和 undefined
的其它所有值,因为这是指「有属性可访问的值」,而 JS 中只有 null
和undefined
没有任何属性;{ aa: string } & { bb: string }
取前后两者并集,即「有 aa 属性」且「有 bb 属性」;the key distinction is that a type cannot be re-opened to add new properties vs an interface which is always extendable.
👇 See the list below