티스토리 뷰
목차
반응형
'Timeout' 형식은 'number' 형식에 할당할 수 없습니다.ts(2322)
number 숫자로 변경할 때 여러 에러 메시지가 발생하는데요. 간단히 + 단한연산자를 사용하거나 Number('문자열') 처럼 Number 함수를 사용하면 해결됩니다.
private testNumber: number | undefined;
var testVar = '100';
testNumber = +testVar;
위와 같이 typescript에서는 + 단항연산자를 사용할 수 있습니다.
자바스크립트에서 parseInt 또는 parseFloat 함수를 사용할 수 있는데, parseInt (null)은 NaN을 반환하지만 +null은 0을 반환하므로 위와 같이 + 단항연산자를 사용하는 것이 편리할 수도 있습니다.
var x = " ";
var y = +x; // y = 0
var z = parseInt(x); // y = NaN
또한, 문자열에 문자와 숫자가 섞여있다면 Number() 함수를 이용해 NaN 여부를 확인할 수도 있습니다.
Number('1234'); // 1234
Number('1a2b'); // NaN
정리하면 타입스크립트에서 문자열을 숫자로 변경하는 방법은 총 3가지입니다.
- parseInt : 문자열을 파싱하여 정수를 리턴 - 0x로 시작하면 16진수, 0으로 시작하면 8진수, 그외에는 10진수로 간주
- parseFloat : 문자열을 부동소수점으로 리턴 - 숫자면 숫자, 숫자가 아닌 것으로 시작하면 NaN(isNaN 필수), 숫자로 시작하면 숫자로 끝날때까지를 반환
- + : 부동 소수점으로 문자열을 리턴 - 구문이 매우 짧다는 것이 특징
다시, 10진수를 기준으로 typescript 소스를 정리하면 이렇습니다. (자바스크립트도 호환됨)
const str = '16';
// 두번째 인자를 생략하면 10 진수로 변환
const num1 = parseInt(str);
// 두번째 파라미터를 지정해도 OK
const num2 = parseInt(str, 10);
// 앞에 +를 붙여서 변환 가능
const num3 = +str;
// Number() 생성자 인수로 전달
const num4 = Number(str);
string |
number |
'16' |
16 |
'016' |
16 |
'-16' |
-16 |
'-016' |
-16 |
'16 .5 ' |
16.5 |
'016.5' |
16.5 |
'-16.5' |
-16.5 |
'-016.5' |
-16.5 |
string to number 변경 방법은 여기까지고요. 아래 타입스크립트 관련 글도 참고해 주세요.
관련 글
TypeScript 7031 바인딩 요소 '인자' 암시적으로 any 형식이 있습니다
반응형