打字稿“可选”(可为空)“?”语法不起作用(部分)

本文关键字:语法 部分 不起作用 可选 | 更新日期: 2023-09-27 18:37:24

我想使用"?"运算符将类上的一个数字声明为可选。

export class DummyClass {
    dummyId?: number;   
}

Visual Studio不允许我编译,因为'; is expected. Unexpected token'错误。但是,当我例如声明一个函数或接口时,它可以毫无问题地工作:

void(sup?: number) {} // nothing to complain here

对此有一些规定吗?还是智能感知有问题?

打字稿“可选”(可为空)“?”语法不起作用(部分)

如果您不需要设置该属性,则可以拥有:

export class DummyClass {
    dummyId: number;   
}

在此示例中,在有人设置值之前,dummyId是未定义的。从本质上讲,属性不需要特殊字符来表示"您不必设置我"。

接受参数时,可以将其设置为可选。方法和构造函数也是如此:

export class DummyClass {
    constructor(public dummyId?: number) {
    }

    doSomething(dummyId?: number) {
    }
}