1. ホーム
  2. ジャバスクリプト

[解決済み】TypeScriptで数値を文字列にキャストする方法

2022-04-04 01:49:14

質問

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

では、どの方式が良いのでしょうか?

解決方法は?

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

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

このような変換は、以下のような場合に最適です。 page_numbernull または undefined . ここで page_number.toString()page_number.toLocaleString() がスローされます。 page_numbernull または undefined .

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

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

<string> または as string キャストアノテーションは、TypeScriptコンパイラに対して 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 に感謝します)。