打字稿:从对象分配成员

时间:2019-12-30 09:48:10

标签: typescript

我正在将现有的JS代码迁移到Typescript。

假设现有的JS代码是这样的:

// Original JS class
class Test1 {
  constructor({ foo = 'a' }) {
    this.foo = foo;
  }
}

我正在尝试尽可能地使用TypeScript中引入的访问修饰符来定义类构造函数,以便我可以直接分配类成员。

// This will assign this.foo automatically.
// But the argument becomes different {foo} vs foo.
class Test2 {
  public constructor(private foo: string = 'a') {}
}

但是问题是Test2现在有不同的参数,这破坏了现有代码。

我不能像这样直接从对象参数分配成员:

// I want something like this... but error.
class Test3 {
  public constructor({ private foo: string = 'a' }) {}
}

因此,我的目标是在保留参数签名this.foo = foo的同时避免使用constructor({foo})。有没有好的解决方法?

1 个答案:

答案 0 :(得分:3)

这似乎是一个带打字稿的开放issue,不幸的是,您将必须执行以下操作:

class Test4 {
    private foo: string;
    public constructor({ foo = 'a' }) {
        this.foo = foo;
  }
}