我的意思是這樣的:假設我擴展了Object類,像這樣:爲什麼我無法使用「any」類型的變量調用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
也應該可以做到嗎?
我不確定我同意你的問題的「應該」部分。當我們寫「任何」時,我們都說我們不知道任何有關價值的類型,所以知識產權也不承擔任何事情。如果我們的意圖是從Object.prototype調用方法,那麼如果我們在類型聲明中使用Object而不是'any',那麼它會更清晰。 – hugomg