Возможно ли иметь гибрид проверки типов (PropTypes & TypeScript) в приложении React? - PullRequest
0 голосов
/ 05 февраля 2020

Моя команда и я собираемся приступить к разработке нового приложения Front End. Я сам пришел с Angular. Я читал на сайте ReactJS, что если наша кодовая база будет существенной, рекомендуется использовать TypeScript или Flow.

Мой вопрос: возможно ли и / или целесообразно создать приложение, которое использует PropTypes для своих Компонентов и дополнительно использует TypeScript для управления состоянием, Redux * * 1013

Ответы [ 3 ]

1 голос
/ 05 февраля 2020

Я бы сказал, что не стоит смешивать эти два параметра, так как проверка состояния типа c выполняется обоими. Так что, если у вас есть управление состоянием в TypeScript, нет смысла не иметь ваши компоненты в TSX.

Использование TypeScript не мешает вам использовать PropTypes, но делает его в основном излишним. PropTypes позволяет вам все еще выполнять некоторую проверку или проверку во время выполнения, так что все еще может быть сделано, даже если вы выбрали TypeScript.

1 голос
/ 05 февраля 2020

Вы определенно можете сделать это, так как они служат разным целям.

PropTypes предназначены для проверки типов во время выполнения и помогут вам обнаруживать проблемы после запуска приложения.

Если вы хотите Stati c Проверка типов, которая может помочь вам в выявлении проблем на этапе кодирования, тогда вам нужен Flow или TypeScript.

Поток прост и может быть использован без изучения нового языка, но Typescript приносит в проект гораздо больше.

0 голосов
/ 06 февраля 2020

Это будет очень самоуверенно, но в большинстве своем это не мое собственное мнение.

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 и устраните их позже.

...