TypeScript에서 숫자를 문자열로 캐스팅


175

Typescript에서 숫자에서 문자열로 캐스팅하는 가장 좋은 방법은 무엇입니까?

var page_number:number = 3;
window.location.hash = page_number; 

이 경우 컴파일러에서 오류가 발생합니다.

'string'유형에 'number'유형을 지정할 수 없습니다.

location.hash문자열 이기 때문에 .

window.location.hash = ""+page_number; //casting using "" literal
window.location.hash = String(number); //casting creating using the String() function

어떤 방법이 더 낫습니까?

답변:


294

'캐스팅'은 전환과 다릅니다. 이 경우 window.location.hash숫자를 문자열로 자동 변환합니다. 그러나 TypeScript 컴파일 오류를 피하기 위해 문자열 변환을 직접 수행 할 수 있습니다.

window.location.hash = ""+page_number; 
window.location.hash = String(page_number); 

page_numberis null또는 일 때 오류가 발생하지 않도록하려는 경우 이러한 변환이 이상적입니다 undefined. 반면 page_number.toString()page_number.toLocaleString()때 발생합니다 page_number입니다 nullundefined.

변환하지 않고 캐스트해야하는 경우 TypeScript에서 문자열로 캐스트하는 방법입니다.

window.location.hash = <string>page_number; 
// or 
window.location.hash = page_number as string;

<string>또는 as string주조 주석이 치료에 타이프 스크립트 컴파일러에게 page_number컴파일시에 문자열로를; 런타임에는 변환되지 않습니다.

그러나 컴파일러는 문자열에 숫자를 지정할 수 없다고 불평합니다. 먼저 <any>다음에 캐스팅해야 합니다 <string>.

window.location.hash = <string><any>page_number;
// or
window.location.hash = page_number as any as string;

따라서 런타임 및 컴파일 타임에 유형을 처리하는 변환하기가 더 쉽습니다.

window.location.hash = String(page_number); 

(문자열 번호 캐스팅 문제를 발견 한 @RuslanPolutsygan에게 감사합니다.)


1
조심해, 경우 page_number이며 null이 설정됩니다 window.location.hash문자열 *에 "null". (오류 : D를 선호합니다).
Jeroen

컴파일러가 불평하지 않기를 원한다면window.location.hash = <any>page_number;
Mouneer

1
사용 변환 (예. String(page_number))보다는 주조 당신이 어떤 사용하고자 할 때 필요하다 String같은 방법을 toLowerCase().
EricRobertBrewer

31

그냥 활용 toString하거나 toLocaleString말하겠습니다. 그래서:

var page_number:number = 3;
window.location.hash = page_number.toLocaleString();

page_numberis null또는 인 경우 오류가 발생합니다 undefined. 원하지 않는 경우 상황에 맞는 수정 프로그램을 선택할 수 있습니다.

// Fix 1:
window.location.hash = (page_number || 1).toLocaleString();

// Fix 2a:
window.location.hash = !page_number ? "1" page_number.toLocaleString();

// Fix 2b (allows page_number to be zero):
window.location.hash = (page_number !== 0 && !page_number) ? "1" page_number.toLocaleString();

toLocaleString은 통화처럼 쉼표를 추가하므로 큰 숫자에는 toLocaleString을 사용하지 마십시오. 식별자를 파괴합니다.
Obaid

7

typescript에서 다음 구문을 사용할 수도 있습니다. 백틱 "" "

window.location.hash = `${page_number}`

5

window.location.hash는입니다 string. 이렇게하십시오 :

var page_number: number = 3;
window.location.hash = page_number.toString(); 

0

const page_number = 3;

window.location.hash = 문자열 인 page_number; // 오류

" 'number'유형을 'string'유형으로 변환하는 것은 다른 유형과 충분히 겹치지 않기 때문에 실수 일 수 있습니다. 의도적 인 경우에는 먼저 '알 수없는'식으로 변환하십시오." -> 숫자를 문자열로 캐스트하려고하면이 오류가 발생합니다. 따라서 먼저 알 수없는 문자열로 변환하십시오.

window.location.hash = (알 수없는 page_number) 문자열; // 올바른 방법


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.