TypeScript isNaN只接受一个数字

7 浏览
0 Comments

TypeScript isNaN只接受一个数字

我使用的是WebStorm 2016.2.2、TypeScript 2.1和Node.js。

由于某种原因,isNaN被声明为只接受数字的函数:

declare function isNaN(number: number): boolean;

我尝试将其更改为任意类型,但似乎不会影响TSC。我仍然得到相同的错误:

类型为'string'的参数不能赋给类型为'number'的参数

我的代码(简化版):

isNaN("10");

我该如何解决或规避这个问题?


编辑:

请注意,根据规范,isNaN的参数可以是任意类型:Number.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;
            }

0