私はこれの意味することは次のとおりです。私は次のようにObjectクラスを拡張したとので:私はタイプObject
の変数を持っている"any"型の変数を持つObject型のメソッドを呼び出すことができないのはなぜですか?
interface Object
{
doSomething();
}
Object.prototype.doSomething = function()
{
//do something here
};
場合は、私が呼び出すことができます。
var x: Object = ...;
x.doSomething();
を、私はインテリセンスを取得し、コンパイル時の型チェック。
しかし、私はこれを行う場合:
var x: any = ...;
x.doSomething();
を私はコンパイラからの助けを得るません。
しかし、すべての変数がObject
から継承しているので、私はこれを理解していません。コンパイラはObject
ができることを知ってはいけません。any
もできるはずですか?私はそれがany
は、ビューのintelisenseポイントからObject
を意味するものではないことを理にかなっていると思いますので、そのようなnull
やundefined
としてJavaScriptで
私は質問の「should」部分に同意できないと思います。 '' any'と書くと、問題の値の型について何も知らないと言っているので、intelisenseも何も想定していないことは意味があります。 Object.prototypeからメソッドを呼び出すのが目的ならば、型宣言で 'any'の代わりに' Object'を使用すればもっと明確になります。 – hugomg