숫자의 문자열 표현이 주어지면 number
TypeScript 에서 유형으로 변환하는 방법은 무엇입니까?
var numberString: string = "1234";
var numberValue: number = /* what should I do with `numberString`? */;
답변
JavaScript 에서 와 마찬가지로parseInt
또는 parseFloat
함수를 사용하거나 단항 +
연산자 를 사용할 수 있습니다.
var x = "32";
var y: number = +x;
언급 된 모든 기술은 올바른 타이핑을 가지며 간단한 10 진 정수 문자열을 올바르게 구문 분석 "123"
하지만 예상되는 다양한 다른 경우 (예 "123.45"
🙂 및 코너 경우 ( 예 :)에 대해 다르게 동작합니다 null
.
이 답변
에서 가져온 표
답변
이 작업을 수행하는 Typescript 방법은 다음과 같습니다.
Number('1234') // 1234
Number('9BX9') // NaN
여기에 답변 된대로 : https : //.com/a/23440948/2083492
답변
동료 Angular 사용자의 경우 :
내 템플릿 , Number(x)
및 parseInt(x)
에러가 발생하고, +x
아무런 효과가 없습니다. 유효한 캐스팅은 x*1
또는 x/1
입니다.
답변
다른 답변에서 볼 수 있듯이 변환을 수행하는 여러 가지 방법이 있습니다.
Number('123');
+'123';
parseInt('123');
parseFloat('123.45')
그래도 한 가지 더 언급하고 싶습니다 parseInt
.
사용할 때는 항상 기수 매개 변수를 전달하는parseInt
것이 좋습니다 . 10 진수 변환의 경우는입니다 . 이것이 매개 변수의 기본값이므로 생략 할 수 있습니다. 이진수의 경우 a 와 16 진수입니다. 실제로 2와 36 사이의 기수가 작동합니다.10
2
16
parseInt('123') // 123 (don't do this)
parseInt('123', 10) // 123 (much better)
parseInt('1101', 2) // 13
parseInt('0xfae3', 16) // 64227
이 parseInt
함수는 문자열을 구문 분석하여 숫자로 변환합니다. 일부 JS 구현에서 parseInt
선행 0을 8 진으로 구문 분석합니다.
ECMAScript 3에서는 권장하지 않고 ECMAScript 5에서는 금지되어 있지만 많은 구현에서는 선행 0으로 시작하는 숫자 문자열을 8 진수로 해석합니다. 다음은 8 진수 결과이거나 10 진수 결과 일 수 있습니다. 신뢰할 수없는 동작을 피하려면 항상 기수를 지정하십시오.
— MDN
코드가 더 명확해진다는 사실은 기수 매개 변수를 지정하면 좋은 부작용입니다.
이후 parseFloat
기수 10에서는 숫자 표현식 만 구문 분석 기수 매개 변수는 필요하지 않습니다.
이것에 더 많은 것 :
답변
Ryan이 말한 내용을 설명하면서 TypeScript는 일반적으로 JavaScript 관용구를 수용합니다.
var n = +"1"; // the unary + converts to number
var b = !!"2"; // the !! converts truthy to true, and falsy to false
var s = ""+3; // the ""+ converts to string via toString()
JavaScript Type Conversion에 대한 모든 흥미로운 세부 정보 .
답변
다음 방법 중 하나를 수행 할 수 있습니다.
var str = '54';
var num = +str; //easy way by using + operator
var num = parseInt(str); //by using the parseInt operation
답변
문자열을 숫자로 변환 :
Typescript에서는 다음과 같은 방식으로 문자열을 숫자로 변환합니다.
ParseInt()
:이 함수는 2 개의 인수를 취합니다. 첫 번째는 구문 분석 할 문자열입니다. 두 번째는 기수입니다 (예 : 10 진수의 경우 10, 이진수의 경우 2). 그런 다음 첫 문자를 숫자로 변환 할 수없는 경우 정수를 반환합니다.NaN
.ParseFloat()
: 구문 분석 할 값을 인수로 사용하고 부동 소수점 숫자를 리턴합니다. 값을 숫자로 변환 할 수없는 경우NaN
이 반환됩니다.+
연산자 : 적절하게 사용될 때 연산자는 문자열 값을 숫자로 강제 할 수 있습니다.
예 :
/* parseInt */
// note that a whole number is returned, so it will round the number
console.log(parseInt('51.023124'));
// parseInt will 'cut off' any part of the string which is not a number
console.log(parseInt('5adfe1234'));
// When the string starts with non number NaN is returned
console.log(parseInt('z123'));
console.log('--------');
/* parseFloat */
// parses the string into a number and keeping the precision of the number
console.log(typeof parseFloat('1.12321423'));
// parseFloat will 'cut off' any part of the string which is not a number
console.log(parseFloat('5.5abc'));
console.log('--------');
/* + operator */
let myString = '12345'
console.log(typeof +myString);
let myOtherString = '10ab'
// + operator will not cut off any 'non number' string part and will return NaN
console.log(+myOtherString);
어느 것을 사용해야합니까?
ParseInt()
문자열을 정수 로 변환하려는 경우에 사용하십시오 . 그러나 모든 숫자 값이 TS의 부동 소수점 값 이므로 데이터 유형은 여전히 부동입니다. 입니다. 구문 분석하려는 숫자의 기수를 지정해야 할 때도이 방법을 사용하십시오.ParseFloat()
문자열을 부동 소수점 숫자 로 구문 분석해야 할 때 사용하십시오 .+
문자열 앞에 연산자를 사용하여 부동 소수점 숫자 로 강제 변환 할 수 있습니다. 이것의 장점은 구문이 매우 짧다는 것입니다.