Я работаю с 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;
}