を拡張するなど、周囲の名前空間でそのインタフェースで、特定のライブラリから(のは、O、それを呼びましょう):活字体:私は純粋なJavaScriptオブジェクトを持っている既存のJavaScriptオブジェクトに
declare namespace N {
interface IO {
// properties...
}
}
私は活字体クラスを作成する必要がありますこのJavaScriptオブジェクトを拡張します。それを拡張するメカニズムはライブラリによって提供されるので、ネイティブTS継承を使用することはできませんが、私はこのJSオブジェクトのすべてのプロパティにアクセスする必要があります。私は、このインタフェースを実装するクラスを宣言し、それを拡張してみました:
declare class DummyO implements N.IO {
// copy-paste everything from N.IO
}
class MyRealClass extends DummyO {
}
今、私はすべてのプロパティへのアクセス権を持っているだけでなく、二つの問題:
- 私はコピー&ペーストして、全体のインターフェースを持っていました、それほど実用的ではありません。
- TypeScriptはDummyO(これは良い)の定義を作成しませんが、同時にその固有のメカニズム(DummyOは実際には存在しないので悪い)を使用して拡張しようとします。
だから、どうしたらいいですか?このネイティブオブジェクトを効果的に拡張するTSクラスを作成するにはどうすればよいですか?あるいは、TSを本当に継承しているということを、そのような面倒なことなしに納得させる別の方法がありますか?私の知っている
なぜ 'MyRealClass'は' N.IO'を直接実装していませんか? –
N.IOは既にJavaScriptオブジェクト(O)によって完全に実装されています。 TSは実際の実装なしでN.IOのコピー貼り付けを許可しますか? – krojew
N.IOはインターフェイスであればどのように実装できますか?私は何かが欠けているかもしれませんが、これはうまくいくと思われます:https://www.typescriptlang.org/play/#src=declare%20namespace%20N%20%7B%0D%0A%20%20%20%20interface% 20%20%7%0%0%%09%09%プロパティ%3A%20%%20%%20%20%20%20%20%20%7%20%30%0% 20N.IO%20%7B%0D%0A%09プロパティ%3A%20 '値%0D%0A%7D。私はDummyOの余分な価値が何であるか分かりません。 –