将字段声明为Array<any>
和Array<Object>
之间的区别是什么。
打字稿中是否有一些额外的收集工具?
答案 0 :(得分:3)
您基本上是在询问any
和Object
之间的差异,并在docs about any
中回答:
任何类型都是使用现有JavaScript的强大方式, 允许您逐步选择加入并选择退出类型检查 汇编。 您可能希望Object扮演类似的角色 用其他语言做的。但是Object类型的变量只允许你 为它们分配任何值 - 你不能调用任意方法 他们,甚至是那些确实存在的人:
let notSure: any = 4;
notSure.ifItExists(); // okay, ifItExists might exist at runtime
notSure.toFixed(); // okay, toFixed exists (but the compiler doesn't check)
let prettySure: Object = 4;
prettySure.toFixed(); // Error: Property 'toFixed' doesn't exist on type 'Object'.
答案 1 :(得分:3)
TypeScript中的Object
与JavaScript中的相同。
不同之处在于any
也接受原语:number
不是对象,除非装箱到Number
。
因此,虽然Array<any>
可以包含基元,但Array<Object>
却不能。
TL; DR:不要使用Object
。
答案 2 :(得分:2)
Object
是类的根类型,因此没有属性,但Object.prototype
上定义的固有属性除外。
any
是一种动态类型,无论您在其上访问哪些属性,都会进行编译。
例如:
const a: Object = "Object"
a.length // ERROR
const b: any = "Any"
b.length // Compiles