10 Функций JavaScript и TypeScript, которых я избегаю

Они не всегда являются проблемой. Но ими злоупотребляют, и их часто можно заменить лучшими альтернативами. Вот почему я избегаю их и что я делаю вместо этого...

?^.

Это называется необязательной цепочкой.

Пример:

user?:.id

Зачем этого избегать? Потому что он говорит Я не уверен, существует ли это свойство

Решение: Убедитесь, что оно существует. Проверяйте данные и используйте специальные типы для различных подстановок данных.

?:

Это объявление необязательного поля в TypeScript.

Пример:

user?:string

Зачем это избегать? Потому что оно не указывает, когда поле должно или не должно существовать. Это снижает безопасность типов.

Решение: Объявите отдельные типы с правильными именами для случаев, когда поле должно и не должно существовать.

as

Ключевое слово as является утверждением типа.

Зачем его избегать? Потому что оно говорит: Поверь мне, TypeScript, на самом деле это такой тип, так что не утруждай себя проверкой.

Решение: Используйте сужение типа.

var и let

Это низшие подходы к объявлению типа.

Зачем их избегать? Потому что они предоставляют читателю меньше информации и поощряют написание мутативного кода.

Решение: Используйте const константу. Она сообщает читателю: Значение этой переменной может измениться, но оно не будет переназначено.

any

Ключевое слово any отключает проверку типов TypeScript.

Зачем этого избегать? Потому что это делает TypeScript бесполезным.

Решение: Объявить тип.

else

Ключевое слово else сочетается с оператором if.

Зачем его избегать? Потому что это признак мутативного кода. Предпочитайте неизменяемые шаблоны.

Решение: Сделайте присваивание с помощью одного выражения, возможно с помощью тернарного.

class

Ключевое слово class объявляет JavaScript класс.

Зачем его избегать? Потому что функции, как правило, предпочтительнее, менее запутаны и менее подвержены ошибкам.

Решение: Пишите в основном чистые функции. Они более компонуемые и их легче тестировать.

enum

Объявляет перечисление TypeScript

Зачем его избегать? Потому что обычно есть лучшие альтернативы.

Решение: Используйте простой объект или объединение строк, полученное из массива, помеченного как константа.

switch

Создаёт условную логику.

Зачем его избегать? Потому что это часто не нужно и снижает безопасность типов, если не исчерпывает.

Решение: Комбинируйте TypeScript Record с объединением типов, чтобы применить исчерпывающие проверки. Или вообще исключите switch, если это возможно, инвертируя управление.

Многие люди ответили примерами, где эти функции полезны и даже необходимы. Я согласен. Вот почему я сказал Я избегаю их. Есть веские причины, по которым эти функции существуют. Я просто хочу сказать, что ими злоупотребляют и часто они не нужны, поэтому избегаю их, когда могу.

Дополнительные материалы

Предыдущая Статья

В чём разница между composer.json и composer.lock

Следующая Статья

Использование PHP Атрибутов для добавления значения