我有一个名为 MyClass 的类。它有很多属性。 我想创建一个包含该类选项的界面。许多选项与 MyClass 具有相同的名称和类型,但并非全部。
编辑:大多数选项属性都是可选的。
目标是尽可能少地重复。
现在,我使用虚拟对象来避免代码重复。还有比这更干净的解决方案吗?
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;
}
最佳答案
Many options have the same name and typing than MyClass, but not all.
如果是这种情况,那就不是一个好的选择。
如果您希望拥有完全相同相同的成员,并且您的类没有任何私有(private)
或 protected
属性/方法,您可以可以写
interface MyClassOptions extends MyClass {
extraProp: string;
}
您可以做的一件事是创建一个仅包含您想要共享的选项的基类,从那里使用您使用的“真实”类作为基类的派生类来创建界面。
关于javascript - Typescript:基于类创建接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39112853/