Javascript 使用parseInt强制转换单选按钮将返回字符串
我有一套单选按钮,使用以下方法设置。在handleChange点,如果目标元素是单选按钮,我将把值转换为整数 在最初的handleChange上,typeof返回一个数字,但是随后的调用将以字符串形式返回状态 我对TypeScript的理解是,语言是强类型的,所以不应该以这种方式强制转换Javascript 使用parseInt强制转换单选按钮将返回字符串,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,我有一套单选按钮,使用以下方法设置。在handleChange点,如果目标元素是单选按钮,我将把值转换为整数 在最初的handleChange上,typeof返回一个数字,但是随后的调用将以字符串形式返回状态 我对TypeScript的理解是,语言是强类型的,所以不应该以这种方式强制转换 <input id="EvalLikelihood_1" name="EvalLikelihood" type="radio" value="1" checked={this.state.EvalLike
<input id="EvalLikelihood_1" name="EvalLikelihood" type="radio" value="1" checked={this.state.EvalLikelihood == 1} onChange={this.handleChange}/>
private handleChange(event): void {
const target = event.target;
console.log(parseInt(target.value));
const value = target.type === 'radio' ? target.value : parseInt(target.value);
const name = target.name;
this.setState({
[name]: value
});
console.log(typeof this.state.EvalLikelihood)
console.log(this.state.EvalLikelihood)
}
this.state = {
EvalLikelihood: 0,
safety: 0,
security: 0,
enviroment: 0,
finance: 0,
operational: 0,
legal: 0,
reputation: 0,
inherentRisk: 0
};
EvalLikelihood: number;
私有句柄更改(事件):void{
const target=event.target;
log(parseInt(target.value));
const value=target.type=='radio'?target.value:parseInt(target.value);
const name=target.name;
这是我的国家({
[名称]:值
});
console.log(this.state.EvalLikelihood的类型)
console.log(this.state.EvalLikelihood)
}
此.state={
评估结果:0,
安全性:0,
安全性:0,
环境:0,
财务:0,
操作:0,
法定人数:0,
声誉:0,
固有trisk:0
};
EvalLikelihood:数字;
感谢您关注本期。Typescript只是JavaScript的超集,不是另一种语言。编译后,生成常规javascript。我不知道为什么第一次对你有用。尝试将代码更改为:
const value = typeof target.type === 'number' ? target.value : parseInt(target.value);
Typescript只是JavaScript的超集,不是另一种语言。编译后,生成常规javascript。我不知道为什么第一次对你有用。尝试将代码更改为:
const value = typeof target.type === 'number' ? target.value : parseInt(target.value);
三元运算符行的问题
在这里,您可以查看target.type
,如果它确实是radio
,它将返回当前值,该值是一个字符串。在这种情况下,您不需要三值运算符
,因为您的输入
具有类型无线电
,因此您只需将字符串值转换为数字
解决方案很简单:将线路从上方更换为:
const value = parseInt(target.value, 10)
.三元运算符行的问题
在这里,您可以查看target.type
,如果它确实是radio
,它将返回当前值,该值是一个字符串。在这种情况下,您不需要三值运算符
,因为您的输入
具有类型无线电
,因此您只需将字符串值转换为数字
解决方案很简单:将线路从上方更换为:
const value = parseInt(target.value, 10)
.您的脚本有错误,意外标记
。如果目标元素类型不是单选按钮,您正在解析为int。请将三元运算符行替换为const value=parseInt(target.value,10)
谢谢@TheReason这解决了我的问题。:)你能解释一下前一行有什么问题吗?一周前刚开始使用react/typescript,因此如果我能从中学习,我将不胜感激。您的脚本有错误,意外标记
。如果目标元素类型不是单选按钮,您正在解析为int。请将三元运算符行替换为const value=parseInt(target.value,10)
谢谢@TheReason这解决了我的问题。:)你能解释一下前一行有什么问题吗?一周前刚开始使用react/typescript,所以如果我能从中学习,我将不胜感激。也许我在语义上描述typescript的措词很糟糕。target.type来自事件,但它是收音机的输入类型。也许我在语义上描述TypeScript的措词不好。target.type来自事件,但它是收音机的输入类型。