クラス(MyClass)にオプションのパラメータを持つ関数(func)があります。オプションのパラメータ(MyInterface)の型は、オプションのプロパティのみを持ちます。typescriptオプションのパラメータ型チェック
数値のようなプリミティブでfooを呼び出すと、コンパイラエラーが予想されました。しかしそれはそうではありません。それはなぜそれのようなものですか?型システムにエラーとしてマークするように指示する方法はありますか?これが起こる
interface MyInterface {
foo?: string
}
class MyClass {
func(b?: MyInterface) : void {}
}
let c = new MyClass();
c.func();
c.func({ foo: 'bar' });
c.func({ foo: 30 }); // compiler error: OK
c.func({});
c.func(60); // No compiler error: Not what I expect
ダックタイピングのような音。 TypeScriptはダックタイピングの一種ですか?これとは対照的に、空のクラスも別の空のクラスとは異なるjavaもあります。 – stefku
はい、オブジェクトは、そのインターフェイスに属するインターフェイスを実際に明示的に実装する必要はありません。プロパティは一致する必要があります。 'MyInterface'要件では、' 60'を 'MyClass.prototype.func'の中の数字として扱うことができません。 –