是否可以使用默认值的可选构造函数参数,如

export class Test {
    constructor(private foo?: string="foo", private bar?: string="bar") {}
}

这给了我以下错误:

参数不能有问号和初始值设定项.

我想创建这样的实例

x = new Test();               // x.foo === 'foo'            
x = new Test('foo1');         // x.foo === 'foo1'
x = new Test('foo1', 'bar1');

实现这一点的正确打字方式是什么?

推荐答案

根据定义,具有默认值的参数是可选的,如stated in the docs:

所有必需参数之后的默认初始化参数

对于构造函数和其他函数都是一样的,所以在你的例子中:

export class Test {
    constructor(private foo: string = "foo", private bar: string = "bar") {}
}

Typescript相关问答推荐

通用默认值触发依赖通用约束变量的错误

如何在类型脚本中使用条件陈述循环

如何从具有给定键列表的对象类型的联合中构造类型

TypScript在对象上强制执行值类型时推断对象文字类型?

当类型断言函数返回假时,TypScript正在推断从不类型

SortKey类型不起作用,尽管它使用的单个类型工作正常<>'

在使用Typescribe时,是否有一种方法可以推断映射类型的键?

类型脚本中没有接口的中间静态类

返回具有递归属性的泛型类型的泛型函数

带下拉菜单的Angular 响应式选项卡

在数据加载后,如何使用NgFor在使用异步管道的可观测对象上生成子组件?

AngularJS服务不会解析传入的Json响应到管道中的模型

使用动态输出类型和泛型可重用接口提取对象属性

使用TypeScrip5强制使用方法参数类型的实验方法修饰符

在Cypress中,您能找到表格中具有特定文本的第一行吗?

为什么发送空字段?

如何从接口中省略接口

是否将Angular *ngFor和*ngIf迁移到新的v17语法?

将带有额外id属性的Rust struct 展平回TypeScript单个对象,以返回wasm-bindgen函数

使用 fp-ts 时如何使用 TypeScript 序列化任务执行?