Как заставить «педантичных» ошибок постоянно устанавливать типы?

Я пришел из объектно-ориентированных языков, таких как Java, и я пытаюсь преобразовать модуль .jsx в .tsx, чтобы использовать типы.

Я должен сказать, что это довольно легко и просто, но мне не нравится следующее:

let methodName = 'GET';

Это объявление переменной в моем методе. Компилятор согласен, что я не назначаю тип, но из java мне это не нравится! Я хотел бы получить ошибку «тип переменной methodName is undefined», чтобы я был вынужден написать это таким образом:

let methodName:string = 'GET';

То же самое касается моих методов, для машинописного текста абсолютно нормально следующее:

handleButtonClick = evt => {

}

но это совсем не хорошо, я должен быть вынужден сделать что-то вроде этого:

handleButtonClick = (evt:React.MouseEvent):void => {

}

Можно ли добиться этого, установив какой-либо параметр?

У компилятора есть строгий режим, который включает такие настройки, как noImplicitAny, если вы это имеете в виду. См. typescriptlang.org/docs/handbook/compiler-options.html

jonrsharpe 07.04.2019 12:40

Обратите внимание, что во многих отношениях TS намного строже, чем Java. Если вы объявите его const, то тип будет даже не string, а "GET". Типы строковых литералов даже не существуют в Java.

Ingo Bürk 07.04.2019 13:50
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
2
46
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В разделе документации параметры компилятора вы найдете параметр --noImplicitAny, который указывает TypeScript не разрешать неявный any.

Обратите внимание, однако, что ваш первый пример не делает mehodName неявно any:

let methodName = 'GET';

TypeScript делает вывод тип methodName из того, что вы ему назначаете, и попытка назначить что-то, кроме строки, будет ошибкой. Документация вывод типа подробно описывает это. В большинстве случаев вам не нужно явно вводить что-то, потому что тип можно вывести. Код по-прежнему типобезопасен.

Это неявно сделало бы methodName типа any:

export let methodName;

С --noImplicitAny это ошибка. Без него для экспортируемой переменной используется неявный тип any.

Другие вопросы по теме