TypeScriptのisNanは数字しか受け付けません。
2023-10-04 12:17:46
質問
WebStorm 2016.2.2, TypeScript 2.1, Node.jsで作業しています。
なぜか
isNan
は数値のみを受け付ける関数として宣言されています。
declare function isNaN(number: number): boolean;
anyに変えてみましたが、TSCには影響がないようです。やはり同じエラーが出ます。
string'型の引数は '数値'
私のコード(簡略化)です。
isNan("10");
どうすれば解決・回避できるのでしょうか?
編集します。
仕様上、isNanのパラメータはどのような型でも良いことに注意してください。 数.isNan()
また 私のコードは簡略化されました。文字列の場合は、数字に変換したい文字列のような数字 ("10") か、単純な文字列 ("Hello world") のどちらかでしょう。
私のコード全体を含めることによってこの質問を長くしたくなかったのですが、混乱を招いたので、これは私の実際のコードです。
if (typeof expectedValue === "string" && !isNaN(expectedValue)) {
expectedValue = +expectedValue;
}
if (typeof actualValue === "string" && !isNaN(ctualValue)) {
actualValue = +actualValue;
}
switch (this.operator) {
case Operator.equal:
return actualValue == expectedValue;
case Operator.notEqual:
return actualValue === undefined || actualValue != expectedValue;
case Operator.greaterThan:
return actualValue > expectedValue;
case Operator.littleThan:
return actualValue < expectedValue;
case Operator.greaterOrEqual:
return actualValue >= expectedValue;
case Operator.littleOrEqual:
return actualValue <= expectedValue;
}
どのように解決するのですか?
別の方法で実装することをお勧めします。
理由は
- 短いかもしれないが、何が起こっているのか理解するのが容易ではない
-
使用方法
isNaN
を使うことは、ここでは最良の選択ではありません。isNaN("")
はfalse
だけでなく
値を数値に変換して、その数値が
NaN
なのか、そうでないのか(@smnbbrvさんが書いているように)。
if (typeof expectedValue === "string" && !Number.isNaN(Number(expectedValue))) {
expectedValue = Number(expectedValue);
}
編集
として値を渡すことができます。
any
:
isNaN(ctualValue as any)
コンパイラのチェックを回避するため。
関連
-
[解決済み] JavaScriptでカンマを桁区切りにして数値を表示する方法
-
[解決済み] JavaScriptで2つの数値の間の乱数を生成する
-
[解決済み] JavaScriptでオブジェクトのキー/プロパティの数を効率的にカウントする方法
-
[解決済み] JavaScriptで浮動小数点数を整数に変換するには?
-
[解決済み] TypeScriptで文字列を数値に変換する方法とは?
-
[解決済み] TypeScript で `window` に新しいプロパティを明示的に設定するにはどうすればよいですか?
-
[解決済み] TypeScriptでの取得と設定
-
[解決済み】TypeScriptのインターフェースと型について
-
[解決済み] javascriptのキャンバスで画像をリサイズする (スムーズ)
-
[解決済み] Typescript のプリミティブ型:"number" と "Number" の違い(TSC は大文字と小文字を区別しない)?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 文字列が有効な数値であるかどうかを確認するにはどうすればよいですか?
-
[解決済み] 文字列がhtmlであるかどうかをチェックする
-
[解決済み] JavaScriptで文字列を数値に変換する最速の方法は何ですか?
-
[解決済み] コールバック地獄とは何か、RXはそれをどのように、そしてなぜ解決するのか?
-
[解決済み] TypeScriptプロジェクトで既存のC#クラス定義を再利用する方法
-
[解決済み] モデルフェッチ時に1をtrueに、0をfalseに変換する方法
-
[解決済み] JavaScriptでjson-objectのキーを取得する [重複].
-
[解決済み] javascriptでオプションのパラメータを扱う
-
[解決済み] なぜjavascriptのES6 Promisesはresolve後も実行を継続するのですか?
-
[解決済み] V8 Javascript エンジンのスタンドアロン実行