1
MyClassというクラスがあります。それはたくさんの特性を持っています。 そのクラスのオプションを含むインターフェイスを作成したいと思います。多くのオプションはMyClassと同じ名前と型名を持ちますが、すべてではありません。Typescript:クラスに基づいてインターフェイスを作成
編集:ほとんどのオプションのプロパティはオプションです。
目標はできるだけ複製することです。
今は、コードの重複を避けるためにダミーオブジェクトを使用しています。これよりもきれいな解決策がありますか?
class MyClass {
callback:(p0:number,p1:string,p2:string[]) => number[];
myAttr:number;
composed:string;
constructor(options:MyClassOptions){
if(options.callback !== undefined)
this.callback = options.callback;
if(options.myAttr !== undefined)
this.myAttr = options.myAttr;
if(options.composedP1 !== undefined && options.composedP2 !== undefined)
this.composed = options.composedP1 + options.composedP2;
}
}
var dummy = <MyClass>null;
interface MyClassOptions {
callback?:typeof dummy.callback;
myAttr?:typeof dummy.myAttr;
composedP1:string;
composedP2:string;
}
私が明示的に言及するのを忘れたことの1つは、「MyClassOptions」のすべてのプロパティがオプションであることです。このソリューションは、すべてのプロパティを非オプションにします。 – RainingChain