2016-05-29 41 views
0

的所有可选字段我有一个构造函数,它将包含对象属性的对象作为参数。创建接口来自类

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

有没有办法做到这一点,而不必重复接口中的所有字段?

您可以将对象转换为config属性:

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

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

但是如果你想默认你必须列出他们在接口+它们写出来,以便你必须写例如a两次。没有办法绕过它