Typescript 接受NaN作为未定义的计算结果

Typescript 接受NaN作为未定义的计算结果,typescript,Typescript,我非常喜欢JavaScript在计算中处理未定义的。例如: function (a) { let c = a.b - 1; console.log(c || ''); } 但是我现在正在做一个启用严格模式的TypeScript项目。所以,我试过这个: function (a:{b?:number}) { let c:number = a.b - 1; console.log(c || ''); } 编译器抱怨a.ba.b可能未定义。我知道a.b经常会未定义。但

我非常喜欢JavaScript在计算中处理
未定义的
。例如:

function (a) {
    let c = a.b - 1;
    console.log(c || '');
}
但是我现在正在做一个启用严格模式的TypeScript项目。所以,我试过这个:

function (a:{b?:number}) {
    let c:number = a.b - 1;
    console.log(c || '');
}
编译器抱怨a.b
a.b
可能未定义。我知道a.b经常会
未定义。但我也确信我可以处理
c
NaN
结果


这里最优雅的解决方案是什么?

一个快速而肮脏的方法是告诉编译器A.b没有定义:

let c = a.b! - 1
稍微长一点的方法是在计算中添加未定义的检查:

let c = a.b?a.b - 1:undefined

一个快速而肮脏的was是告诉编译器A.b未定义:

let c = a.b! - 1
稍微长一点的方法是在计算中添加未定义的检查:

let c = a.b?a.b - 1:undefined
信息:NaN类型作为提案信息:NaN类型作为提案