2016-10-14 2 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입니다.

관련 문제