#javascript #typescript
Вопрос:
У меня есть функция, которая принимает только числовую переменную.
function add(n1: number) {
return n1 n1;
}
И я инициализирую любую переменную и присваиваю ей строку ‘5’
let number1;
number1 = '5';
Мне было интересно, почему он не показывает ошибку, когда я хочу передать строку в функцию?
console.log(add(number1));
(Конечно, он выводит 55, потому что строка объединена.)
Комментарии:
1. Я получаю ожидаемую ошибку. Где конкретно в общем процессе вы проверяете наличие этой ошибки? Полученный JavaScript по-прежнему остается JavaScript и по-прежнему будет работать без жалоб на типы. Только при наложении/переносе он покажет ошибку.
2. @Дэвид, Это странно. Я запускаю TS v4.3.5, и он не отображается ни в моей среде разработки, ни в компиляторе: snpy.in/7hkYM1
3. Я только что узнал кое-что новое из приведенного ниже ответа. Веб — сайт, которым я пользовался, был
noImplicitAny
выбран. Зайдите в конфигурацию и снимите флажок, и поведение, которое вы описываете, будет соблюдено.4. @Дэвид только что проверил это, и в этом была проблема. Спасибо, что указали 🙂
Ответ №1:
Если тип не указан (неявный any
) или установлен в any
значение , использование переменной не будет проверяться на тип. Это полезно, если вы постепенно переносите код JavaScript в TypeScript.
Если вы хотите отметить неявные any
(как в вашем примере) как ошибку, используйте флаг noImplicitAny
компилятора.
Комментарии:
1. Ага. Это то, что я искал. Я просто следовал учебнику и экспериментировал самостоятельно. Еще не добрался до файла tsconfig.