Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用parseInt强制转换单选按钮将返回字符串_Javascript_Reactjs_Typescript - Fatal编程技术网

Javascript 使用parseInt强制转换单选按钮将返回字符串

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

我有一套单选按钮,使用以下方法设置。在handleChange点,如果目标元素是单选按钮,我将把值转换为整数

在最初的handleChange上,typeof返回一个数字,但是随后的调用将以字符串形式返回状态

我对TypeScript的理解是,语言是强类型的,所以不应该以这种方式强制转换

<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来自事件,但它是收音机的输入类型。