TypeScriptで文字列が数値かどうかを実際のコードで確認する方法
TypeScriptで文字列が数値かどうかを確認する方法
typeof演算子を使う
最も基本的な方法は、typeof
演算子を使って文字列の型を取得し、それがnumber
型かどうかを確認する方法です。
const str = "123";
if (typeof str === "number") {
console.log("数値です");
} else {
console.log("数値ではありません");
}
この方法の利点は、シンプルで分かりやすいことです。ただし、NaN
のような数値ではない文字列もnumber
型として判定されるため、注意が必要です。
isNaN()
関数は、引数が数値かどうかを判定し、数値ではない場合はtrue
、数値の場合はfalse
を返します。
const str = "123";
if (isNaN(str)) {
console.log("数値ではありません");
} else {
console.log("数値です");
}
この方法の利点は、NaN
のような数値ではない文字列もしっかり判定できることです。
const str = "123";
if (Number.isFinite(str)) {
console.log("有限な数値です");
} else {
console.log("有限な数値ではありません");
}
この方法は、無限大やNaNのような特殊な数値も判定したい場合に有効です。
パーサーを使う
より厳密な判定を行う場合は、数値のパースを行うライブラリを使うことができます。
import { parse } from "number-parser";
const str = "123";
const result = parse(str);
if (result.success) {
console.log("数値です");
} else {
console.log("数値ではありません");
}
この方法の利点は、数値以外のパーツを含む文字列でも、数値部分だけを正しく判定できることです。
以上、TypeScriptで文字列が数値かどうかを確認する方法をいくつか紹介しました。
それぞれの方法にはメリットとデメリットがあるので、状況に合わせて使い分けることが重要です。
typeof演算子を使う
const str = "123";
if (typeof str === "number") {
console.log("数値です");
} else {
console.log("数値ではありません");
}
isNaN()関数を使う
const str = "123";
if (isNaN(str)) {
console.log("数値ではありません");
} else {
console.log("数値です");
}
Number.isFinite()関数を使う
const str = "123";
if (Number.isFinite(str)) {
console.log("有限な数値です");
} else {
console.log("有限な数値ではありません");
}
パーサーを使う
import { parse } from "number-parser";
const str = "123";
const result = parse(str);
if (result.success) {
console.log("数値です");
} else {
console.log("数値ではありません");
}
上記以外にも、以下のような方法で文字列が数値かどうかを確認することができます。
Number.parseFloat()
関数を使う- 正規表現を使う
これらの方法は、それぞれ特定の種類の数値かどうかを判定する場合に有効です。
例:
Number.parseFloat()
関数: 小数点を含む数値かどうかを判定する- 正規表現: 特定の形式の数値かどうかを判定する
TypeScriptで文字列が数値かどうかを確認するその他の方法
Number.parseFloat()
関数は、文字列を解析して小数点数を返します。解析に成功した場合、数値として解釈できる部分のみが返されます。
const str = "123.45";
const num = Number.parseFloat(str);
if (num !== NaN) {
console.log("数値です");
} else {
console.log("数値ではありません");
}
const str = "123";
const num = Number.parseInt(str);
if (num !== NaN) {
console.log("数値です");
} else {
console.log("数値ではありません");
}
正規表現を使って、文字列が特定の形式の数値かどうかを判定することができます。
const str = "123";
const regex = /^\d+$/;
if (regex.test(str)) {
console.log("数値です");
} else {
console.log("数値ではありません");
}
ライブラリを使う
number-parser
のようなライブラリを使うと、より厳密な判定を行うことができます。
import { parse } from "number-parser";
const str = "123";
const result = parse(str);
if (result.success) {
console.log("数値です");
} else {
console.log("数値ではありません");
}
typescript