Машинопись не выдает ошибок при последующей инициализации КАКОЙ-ЛИБО переменной

#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.