有没有办法在Typescript类中指定类型安全的可选成员?
就是这样......
class Foo {
a?: string;
b?: string;
c: number;
}
....
foo = new Foo();
...
if (foo.a !== undefined) { ... (access foo.a in a type-safe string manner) ... }
如果您熟悉OCaml / F#,我正在寻找类似'string option'的东西 .
4 回答
以下工作正常:
您甚至可以在创建时初始化:
需要注意的一点是,TypeScript类型会从生成的JavaScript中删除 . 因此,如果您正在寻找类似F#
option
类型的内容,则需要运行时库支持,这超出了TypeScript的范围 .在某些用例中,您可以使用Parameter properties完成它:
playground
可选的类属性已添加为Typescript 2.0中的一项功能 .
在此示例中,属性 b 是可选的:
Typescript 2.0 release notes - Optional class properties
现在可以在类中声明可选属性和方法,类似于接口中已允许的属性和方法:
在--strictNullChecks模式下编译时,可选属性和方法会自动在其类型中包含未定义 . 因此,上面的b属性是数字| undefined和上面的g方法是类型(()=>数字)|未定义 . 类型防护可用于去除类型的未定义部分:
Optional class properties