interface Foo {
bar() : Promise<string>;
}
class MyFoo implements Foo {
bar() : string {
return "";
}
}
class MyFoo2 implements Foo {
bar() : Promise<number> {
return new Promise<number>(null);
}
}
上記の2つの実装のいずれもエラーを起こさないはずですか? 理由 - それは、文字列を返し、 ジェネリックのTypescript型ガードは強制されません
- MYFOOは、エラーが出るのですか?
私が知ることは、TypeScriptは返された型のメンバーであり、宣言された型ではないかどうかをチェックするようです。しかし、実装が正しい型を返すようにこのインタフェースを宣言する方法はありますか?
編集: ES6インタフェースPromise
がthen() : Promise<T>
状部材が、foo(): T
のような何も定義されているため、型チェックが機能しないようです。カスタム汎用インターフェイスでこれをシミュレートすると、インターフェイスにタイプT
のメンバが含まれていて、汎用タイプのメンバが含まれていないと正しくエラーになりますT
ああ、美しい。それを見つけてくれてありがとう! – Kir
奇妙なことに、私はまだ文字列vs "Promise"に関するエラーだけでコンパイルすることができますが、私は同じ正確なサンプルを使用していますか?他の依存関係が間違っている可能性がありますか? 私は[email protected]とTSC 2.0.10を持っています。使用されるlibに影響する可能性のある他の依存関係はありますか? –
Kir