如何使用parseInt的union类型?

时间:2016-10-14 09:49:53

标签: typescript parseint union-types

我有一个以字符串形式出现的值,例如" 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需要一个字符串。

我如何解决这个问题,或者只是停止警告?

1 个答案:

答案 0 :(得分:1)

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

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

event.value = num;

在此示例中,在类型保护的内部,num的类型只是string。外面它仍然是string | number