Эффективный TypeScript: 62 способа улучшить код
Қосымшада ыңғайлырақҚосымшаны жүктеуге арналған QRRuStore · Samsung Galaxy Store
Huawei AppGallery · Xiaomi GetApps

автордың кітабынан сөз тіркестері  Эффективный TypeScript: 62 способа улучшить код

Егор
Егордәйексөз келтірді6 ай бұрын
Избегайте аннотирования типов, когда TypeScript может сделать их вывод. • Код должен содержать аннотации типов для сигнатур функций и методов, но не для местных переменных в их телах. • Чтобы предотвратить ошибки реализации в коде пользователя, попробуйте применить явные аннотации для объектных литералов и возвращаемых типов функций, даже если они могут быть выведены.
1 Ұнайды
Комментарий жазу
Мила
Миладәйексөз келтірді2 апта бұрын
el is HTMLInputElement, будучи возвращаемым типом, сообщает модулю проверки, что он может сузить тип параметра, если функция вернет true.
Комментарий жазу
Мила
Миладәйексөз келтірді3 апта бұрын
объект String может быть всегда равен только себе: > "hello" === new String("hello") false > new String("hello") === new String("hello") false
Комментарий жазу
Мила
Миладәйексөз келтірді3 апта бұрын
Вы можете встретить такой вид кода: const bob = {}. Это оригинальный вариант синтаксиса, соответствующий утверждению, и он является эквивалентом {} as Person.
Комментарий жазу
Мила
Миладәйексөз келтірді3 апта бұрын
Может ли тройка быть назначена для пары? Думая в категориях структурной типизации, вы можете ожидать, что это возможно. В паре есть ключи 0 и 1, так не может ли она иметь и другие тоже? Например, 2? const triple: [number, number, number] = [1, 2, 3]; const double: [number, number] = triple; // ~~~~~~ '[number, number, number]' не может быть назначен // для '[number, number]'. // Типы свойства 'length' являются несовместимыми. // Тип '3' не может быть назначен для типа '2'. Нет, и по весьма интересной причине. Вместо того чтобы моделировать пару чисел как {0: number, 1: number}, TypeScript моделирует ее как {0: number, 1: number, length: 2}.
Комментарий жазу
Мила
Миладәйексөз келтірді3 апта бұрын
extends также может оказаться ограничителем в обобщенных типах, сохраняя при этом значение подмножества (правило 14): function getKey(val: any, key: K) { // ... } Что значит расширить string? Будет сложно представить это в рамках наследования объекта или пытаться определить подкласс оберточного объекта типа String (правило 10). В контексте наборов значений все просто: расширением станет любой тип, чья область является подмножеством string: и литеральные типы, и объединения строковых литеральных типов, и сами string: getKey({}, 'x'); // ok, 'x' расширяет string
Комментарий жазу
Роман
Романдәйексөз келтірді1 ай бұрын
На рис. 8.3 приведен пример, составленный с помощью инструмента madge, изображающий JavaScript-проект среднего размера.
Комментарий жазу
JavaScript применяет утиную типизацию, а TypeScript ее моделирует при помощи структурной типизации.
Комментарий жазу
Егор
Егордәйексөз келтірді6 ай бұрын
В TypeScript может изменяться значение переменной, но не ее тип. Единственный распространенный случай изменения типа — это его сужение (правило 22). Однако уменьшенный тип не может включать новые значения. Несмотря на то что все же существует несколько важных исключений (правило 41), это всего лишь исключения, но не правила.
Комментарий жазу
Егор
Егордәйексөз келтірді6 ай бұрын
Следует запомнить • Если функция не модифицирует свои параметры, то их следует объявить readonly. Так контракт функции станет более ясным и исчезнет вероятность непредусмотренных изменений при ее реализации. • Используйте readonly против ошибок, связанных с изменениями, и для обнаружения мест в коде, где изменения происходят. • Изучайте разницу между const и readonly. • Имейте в виду, что readonly ограничен.
Комментарий жазу