TypeScript エラー "Typescript Type 'string' is not assignable to type 'number'" の解決方法
TypeScript 型 'string' は型 'number' に割り当てることができません
原因
このエラーが発生する理由は、JavaScript と TypeScript は異なる型システムを持っているためです。 JavaScript では、すべての値は動的に型付けされます。つまり、変数の型は実行時に決定されます。一方、TypeScript は静的型付け言語です。つまり、変数の型はコンパイル時に決定されます。
解決策
このエラーを解決するには、以下のいずれかの方法があります。
文字列を数値に変換するには、Number()
関数を使用できます。
const num1 = "123";
const num2 = Number(num1); // num2 は 123 という数値になります
変数の型を string に変更するには、:
演算子を使用できます。
const num1 = "123";
const num2: string = num1; // num2 は "123" という文字列になります
型ガードを使用して、変数の型が string であるかどうかを確認してから、数値に変換することができます。
const num1 = "123";
if (typeof num1 === "string") {
const num2 = Number(num1); // num2 は 123 という数値になります
}
型エイリアスを使用して、独自の型を作成することができます。
type MyNumber = string;
const num1: MyNumber = "123";
// num1 は "123" という文字列になります
parseInt()
関数を使用して、文字列を整数に変換することができます。
// エラーが発生する例
const num1: number = "123"; // エラー: Typescript Type 'string' is not assignable to type 'number'
// 解決策 1: 文字列を数値に変換する
const num2: number = Number("123"); // num2 は 123 という数値になります
// 解決策 2: 変数の型を string に変更する
const num3: string = "123"; // num3 は "123" という文字列になります
// 解決策 3: 型ガードを使用する
const num4 = "123";
if (typeof num4 === "string") {
const num5: number = Number(num4); // num5 は 123 という数値になります
}
// 解決策 4: 型エイリアスを使用する
type MyNumber = string;
const num6: MyNumber = "123"; // num6 は "123" という文字列になります
// その他: parseInt() 関数を使用する
const num7: number = parseInt("123"); // num7 は 123 という数値になります
// その他: parseFloat() 関数を使用する
const num8: number = parseFloat("123.45"); // num8 は 123.45 という数値になります
// エラーが発生する例
// エラー: Typescript Type 'string' is not assignable to type 'number'
// 解決策 1: 文字列を数値に変換する
123
// 解決策 2: 変数の型を string に変更する
"123"
// 解決策 3: 型ガードを使用する
123
// 解決策 4: 型エイリアスを使用する
"123"
// その他: parseInt() 関数を使用する
123
// その他: parseFloat() 関数を使用する
123.45
他の方法
const num1: number = `${"123"}`; // num1 は 123 という数値になります
const num1: number = +"123"; // num1 は 123 という数値になります
ビルトイン型ガードを使用する
const num1 = "123";
if (typeof num1 === "string") {
const num2: number = num1 as number; // num2 は 123 という数値になります
}
型アサーションを使用して、変数の型を強制的に変更することができます。
const num1 = "123";
const num2 = num1 as number; // num2 は 123 という数値になります
Number.prototype.valueOf()
メソッドを使用して、文字列を数値に変換することができます。
const num1 = "123";
const num2: number = num1.valueOf(); // num2 は 123 という数値になります
javascript typescript