Javascript 避免在typescript中添加字符串和数字?

Javascript 避免在typescript中添加字符串和数字?,javascript,typescript,types,Javascript,Typescript,Types,我想在typescript代码中使用两个值 let a:number = b + c; b和c在运行时出现,但应该是数字 但如果b或c中的一个是字符串,它将导致a成为字符串,这可能会导致错误,我们无法在运行时检测到这一点 如果有,我可以在typescript中做些什么来避免这种情况发生 PS:我知道typescript在运行时会出现问题,但我只是想知道是否有人必须对此类问题发表意见。您可以使用parseInt或parseFloat函数,或者只需使用一元+运算符: 设b=3; 设c=2; 设

我想在typescript代码中使用两个值

let a:number = b + c; 
b和c在运行时出现,但应该是数字

但如果b或c中的一个是字符串,它将导致a成为字符串,这可能会导致错误,我们无法在运行时检测到这一点

如果有,我可以在typescript中做些什么来避免这种情况发生


PS:我知道typescript在运行时会出现问题,但我只是想知道是否有人必须对此类问题发表意见。

您可以使用parseInt或parseFloat函数,或者只需使用一元+运算符:

设b=3; 设c=2; 设a=+b++c;//a:号码
loga使用let c=parseIntb+parseIntc

首先,您应该思考为什么b或c没有类型

解决这个问题的Typescript方法是强制b和c使用数字类型。如果您尝试使用非数字参数调用sum,它将在编译/LINTING时而不是在运行时发出抱怨

function sum(b:number, c:number) {
    let a = b + c;
}
通过这种方式,您强制两个变量都是数字,因此结果a也将是数字

如果b和c来自另一个位置,用户输入?如果无法控制其类型,则无法使用Typescript执行任何操作。Typescript是一种类型检查语言,它将在编译之前检查所有内容。之后,它将编译为纯Javascript

这里的方法是对输入进行消毒提示:这是一个很好的做法!:-例如,通过在运行时检查类型,如下所示:

if (typeof b !== "number") {
    b = Number(b) || 0;
}

parseInt2+3将返回23,这可能不是您想要的want@MauriceNino请不要以完全改变答案的方式编辑答案,即使你是正确的。你可以自己回答。我试过几次编辑语言,但由于你仍在修改答案,他们被拒绝了,因此一些清晰的建议-打字而不是打字,不能做任何事而不是什么都不能做什么都不能做什么都不能做是双重否定的意思你可以做一些事,这不是你的意思。@euemissh哦,对不起,哈哈。不会再做任何小的改变了。谢谢你的建议。我总是陷入双重否定,这在我的主要语言中很常见再次编辑它,这样您就可以获得编辑奖励了。它总是给我留下深刻的印象,任何人都可以用自己的语言以外的语言连贯地回答!苏欧,我的回答怎么样了?我们在这里为你浪费空闲时间。至少给出一点反馈…:-