Это будет очень самоуверенно, но в большинстве своем это не мое собственное мнение.
PropTypes & Typescript
Они разные.
Машинопись
- Полноценное решение для проверки типов.
- Stati c.
- Основная проблема в том, что может быть так много пропущенных / неправильных определений, хотите вы того или нет, вы потратите (совсем) некоторое время на выяснение причин не работает За последний год он получил ОЧЕНЬ лучше, но он никогда не бывает беспроблемным. Для получения дополнительной информации см., Например, Руководство по многоязыковому интерфейсу для машинописи .
- Кроме того, Typescript может привести к более подробному или сложному коду. Смотри, например. Руководство по машинописи Redux Tool Kit
PropTypes
PropTypes намного легче, чем Typescript, в том, что он может делать. И хотя вы можете иметь все виды сложных проверок - наиболее практичное использование включает в себя реквизиты компонентов и, возможно, ключевые структуры.
PropTypes может работать во время выполнения, но часто отключается. Преимущество проверки типов во время выполнения сомнительно:
- Что вы можете поймать во время выполнения, которое не будет обнаружено во время компиляции?
- Что вы делаете делать, если есть ошибки?
Общий вектор мудрости указывает на это:
Нет смысла иметь оба.
Машинопись против Flow
Хотя мой опыт в C ++ сделал введение проверки типов в JavaScript благословением, я был большим противником TypeScript (использовал его годами) и большим сторонником Flow. Это было основано на многих факторах.
Поток почти мертв
Но все изменилось за один день, когда Предустановка Babel Typescript стала пригодной для цели.
Это позволяет просто иметь гибридный проект JS / TS, что означает, что вы можете:
- Запустить JS и медленно перейти к TS.
- Запустить TS и откат на JS, если есть проблемы с Typescript, замедляющие вас.
Конечно, вы могли бы сделать это раньше (и вам все еще нужно, чтобы Typescript делал проверку типов), но с Babel-Typescript трудно подумать, почему бы вам НЕ сделать этого.
Это также меняет обоснование для использования Flow во многих отношениях, и в дополнение ко всем видам проблем, которые были допущены командой Flow, Babel-Typescript оставлен как очень очевидный первый выбор для многих.
В таком гибридном проекте мы используем Typescript для TSX и PropTypes для JSX.
Заключение
Поэтому я рекомендую настроить Babel-Typescript для выполнения компиляция и Typescript для выполнения только проверки типов.
Если вы хотите использовать Next Js, например, все это уже выходит из коробки. Вам почти ничего не нужно делать.
Затем напишите гибрид JS / TS. Если вам нужна скорость, используйте JS. Если вам нужна безопасность типов - TS.
Последнее, что я должен упомянуть, это то, что механизм вывода TypeScript в последнее время значительно улучшился. На самом деле у нас есть много файлов ts / tsx без явного набора , но Typescript жалуется, когда вы пропускаете объявленную пропу.
Таким образом, если Typescript не доставит вам хлопот, вы всегда можете начать с ts / tsx по умолчанию, ничего не вводить (логический вывод будет вызывать проблемы), а затем постепенно вводить базу кода. Если есть проблемы с Typescript - измените на js и устраните их позже.