TypeScript 문자열 숫자 변경 - 단항연산자 (string to int)

'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가지입니다.


  1. parseInt : 문자열을 파싱하여 정수를 리턴 - 0x로 시작하면 16진수, 0으로 시작하면 8진수, 그외에는 10진수로 간주
  2. parseFloat : 문자열을 부동소수점으로 리턴 - 숫자면 숫자, 숫자가 아닌 것으로 시작하면 NaN(isNaN 필수), 숫자로 시작하면 숫자로 끝날때까지를 반환
  3. + : 부동 소수점으로 문자열을 리턴 - 구문이 매우 짧다는 것이 특징


다시, 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 형식이 있습니다

TypeScript 강의 3. 자바스크립트 버전과 ECMAScript

TypeScript 강좌 4. 호환성 tsconfig.json

댓글(0)

Designed by JB FACTORY