从类创建接口所有可选字段

时间:2016-05-29 03:10:56

标签: typescript

我有一个构造函数,它将一个包含对象属性的对象作为参数。

class MyObj {
    a = 0;
    b = 0;
    c = 0;
    d = 0;
    constructor(params){
        for(var i in params)
            this[i] = params[i];
    }
}

我的目标是在编写new MyObj({a:1})之类的内容时自动完成。 现在,我需要创建一个具有自动完成功能的独立界面

interface MyObjOptions {
    a?:number;
    b?:number;
    c?:number;
    d?:number;
}

constructor(params:MyObjOptions){...}

有没有办法在不必复制界面中的所有字段的情况下这样做?

1 个答案:

答案 0 :(得分:1)

  

有没有办法在不必复制界面中的所有字段的情况下这样做?

您可以将对象放入config属性:

interface MyObjOptions {
    a?:number;
    b?:number;
    c?:number;
    d?:number;
}

class MyObj { 
    constructor(public options:MyObjOptions) {
    }
}

但是如果你想要默认,你必须在界面中列出它们+把它们写出去,所以你必须写出例如a两次。没办法