2016-10-14 6 views
0

"1.5"のような文字列として値が入力されています 数値の場合は数値として記録します。番号割り当てられていないパラメータ文字列| このコードがj私はインターフェイスparseIntで共用体の型を使用する方法は?

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

しかし、これは文字列型の」引数を

などのエラーを与えるを持って

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

を行います'

parseIntは文字列を期待しているためです。

これを回避するにはどうすればよいですか、その警告を止めるだけですか?

+0

「値」**は常に**文字列ですか? –

+0

良い点は、常に文字列として入力されますが、数値であることもあります。私は、 'in:string> out:number | string'のためのインタフェースで別のフィールドを使うことができたと思います – dcsan

答えて

1

あなたはタイプを減らすためにタイプのガードを使用することができます。

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

event.value = num; 

をこの例では、タイプのガードの内側に、numの種類は、単にstringです。外側はstring | numberのままです。

関連する問題