1

我有一个值作为字符串输入,例如“1.5”如果它是一个数字,我希望它被记录为一个数字。此代码将执行 j

  // parse out the value as a number if it is one
  let val = parseFloat(event.value) || event.value;
  event.value = val;

我有一个接口

interface IEvent {
  value: string | number;
  ...
}

但这给出了一个错误

'字符串类型的参数|数字未分配参数字符串'

因为 parseInt 需要一个字符串。

我怎样才能解决这个问题,或者只是停止那个警告?

4

1 回答 1

1

您可以使用类型保护来减少类型:

let num = event.value;
if (typeof num === 'string'){
    num = parseFloat(num) || num;
}

event.value = num;

在这个例子中,在类型保护内部,类型num是简单的string。外面它仍然存在string | number

于 2016-10-14T10:26:23.513 回答