将对象解构与TypeScript中的参数属性相结合

时间:2017-06-04 08:09:40

标签: typescript

我已经阅读过typescript如何提供一个简写,你可以在其中使用访问修饰符为constructor参数添加前缀,并在类上自动声明并从构造函数中复制

class Foo {
    x: number;
    constructor(x:number) {
        this.x = x;
    }
}

所以前面的例子可以重写为(注意公共x:数字):

class Foo {
    constructor(public x:number) {
    }
}

但我不能用带有对象文字的参数:

export class Hero {
  constructor( {public id = 0   , public name = 'noname'}: {id?: number, name?: string }  = {}) {
  }
}

我收到双重错误:错误TS1005:'='预期。

是否可以在打字稿中进行?

1 个答案:

答案 0 :(得分:1)

TypeScript尚不支持对象销毁和参数属性组合的特定要求。有关详细信息,请参阅https://github.com/Microsoft/TypeScript/issues/5326。 但你可以实现一个变通方法并为这个puprose定义一个接口(或类,它在TypeScript中并不重要),如下所示:

var TestInterface = (function () {
    function TestInterface() {
    }
    return TestInterface;
}());

但是如果你将TestInterface定义为类,那么相应的construcor函数将被编译为JS。

{{1}}