lhk*_*lhk 6 non-nullable typescript
当在名称末尾指定带有问号的成员时,类型签名会自动扩展为 include undefined。创建一个没有这个成员的实例是可以的:
interface Option{
val? : number; // hover over val and it tells you that the type is number|undefined
}
let o: Option = {};
Run Code Online (Sandbox Code Playgroud)
推断出的 val 类型是number|undefined。到目前为止,我认为这是问号的唯一效果。但是手动注释类型联合并没有相同的效果:
interface Union{
val : number|undefined;
}
let u: Union = {}; // compiler complains about missing member val
Run Code Online (Sandbox Code Playgroud)
为什么第二个代码示例不正确?
Tot*_*ewb 12
您的第一个选项表示“val 是类型为 number 的可选属性”。它可以在那里,但并非必须如此。
您的第二个选项表示“val 是必需的属性,其值可以为数字或未定义”。因此,它将引发编译器错误。
| 归档时间: |
|
| 查看次数: |
376 次 |
| 最近记录: |