web-dev-qa-db-ja.com

TypeScriptで文字列に数値をキャストする

Typescriptで数値から文字列にキャストするための最良の方法は(もしあれば)どれですか?

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

この場合、コンパイラはエラーをスローします。

型 'number'は型 'string'に代入できません

location.hashは文字列なので。

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

それではどちらの方法が良いですか?

114
Ma Jerez

「キャスティング」は変換とは異なります。この場合、window.location.hashは数値を文字列に自動変換します。ただし、TypeScriptのコンパイルエラーを回避するために、文字列変換を自分で行うことができます。

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

page_numbernullまたはundefinedのときにエラーをスローしたくない場合は、これらの変換が理想的です。 page_numbernullまたはundefinedの場合、page_number.toString()およびpage_number.toLocaleString()はスローされます。

変換するのではなくキャストするだけでよい場合は、TypeScriptで文字列にキャストする方法です。

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

<string>またはas stringキャストアノテーションは、コンパイル時にpage_numberを文字列として扱うようにTypeScriptコンパイラに指示します。実行時に変換されません。

ただし、コンパイラは文字列に番号を代入できないと文句を言います。最初に<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に感謝します。)

192
Robert Penner

toString または toLocaleString を使ってください。そう:

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

page_numbernullまたは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();
24
Jeroen

TypeScriptでは次の構文も使用できます。バッククォート "` "に注意してください

window.location.hash = `${page_number}`
2
Nehal Damania

window.location.hashはstringなので、次のようにします。

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

文字列を数値にキャストするには、 "+"記号を使用します。

window.location.hash = +page_number;
2
Bettaibi Nidhal