TypeScript 的 object 和 Object 是两种不同的类型,它们的区别和用途如下:
• object 类型是 TypeScript 2.2 引入的新类型,它表示非原始对象,也就是除了 number, string, boolean, symbol, null 或 undefined 之外的任何类型object 类型是所有对象类型的父类型,也就是说,任何对象类型都可以赋值给 object 类型,但是 object 类型只能赋值给自己和 any 类型object 类型可以用来表示不确定的输入参数或返回值,或者用来进行疲劳性检查(exhaustiveness check)
• Object 类型是一个内置的接口,它描述了所有对象都具有的一些属性和方法,例如 valueOf, toString, hasOwnProperty 等。Object 类型可以接受任何类型的赋值,但是只能赋值给 Object 或 any 类型。Object 类型不太安全,因为它允许原始类型也可以赋值给它,而原始类型并不是真正的对象。Object 类型不建议使用,官方文档中也有说明。
• {} 类型是一个空对象类型,它表示没有任何属性的对象。{} 类型和 Object 类型类似,也可以接受任何类型的赋值,除了 null 和 undefined 之外。{} 类型也不太安全,因为它不能保证对象的结构和内容。