首页 > 解决方案 > 打字稿:从对象分配成员

问题描述

我正在将现有的 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})。有没有好的解决方法?

标签: typescript

解决方案


这似乎是打字稿的一个未解决问题,不幸的是,您将不得不执行以下操作:

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

推荐阅读