我的意思是:假设我像这样扩展Object类:
interface Object
{
doSomething();
}
Object.prototype.doSomething = function ()
{
//do something here
};
如果我有Object
类型的变量,我可以打电话:
var x: Object = ...;
x.doSomething();
我得到Intellisense并编译时间类型检查。
但如果我这样做:
var x: any = ...;
x.doSomething();
我没有得到编译器的帮助。
但我不明白这一点,因为所有变量都来自Object
,编译器不应该知道Object
可以做的任何事情,any
也应该是能够做到吗?
答案 0 :(得分:1)
我没有得到编译器的帮助。
对于类型为any
的任何内容,编译器取消。毕竟,它甚至可能不是Object
的延伸。
答案 1 :(得分:0)
Javascript中的某些内容(例如null
和undefined
)不是对象,因此我认为any
从知识分子的角度来看不会暗示Object
是有道理的。也就是说,Typescript有一个轻松的打字系统,将Null
和Undefined
视为Object
的{{3}},所以我猜他们可以制作了对象如果他们愿意,.prototype东西会显示类型为any
的内容。