Постепенное Внедрение Typescript В Ваш Проект React.

Привет, Хабр! В последнее время комбинация React+TypeScript стала особенно популярной во фронтенд-сфере.

Соответственно, возрастает актуальность грамотной миграции с JavaScript на TypeScript, желательно в короткие сроки.

Сегодня мы хотели бы обсудить с вами именно эту тему.



Постепенное внедрение TypeScript в ваш проект React.

Как безопасно создавать и внедрять компоненты React TypeScript в ваш проект React JS. Почему вам может понадобиться перейти с JS на TS? Причин этому может быть огромное количество, но дело не в этом.

(Гипотетический) факт таков: вам нужно начать использовать TypeScript, и вам нужен простой способ реализовать его в своем проекте.

Причем все это нужно как-то сделать, не нарушая структуру всего существующего кода, и убедив команду в необходимости такого перехода.

Здесь будет продемонстрирован постепенный рефакторинг: как встроить компоненты React в другую базу кода, а затем использовать Bit для безопасного внедрения их в уже работающее приложение React JavaScript. .



Безопасное встраивание компонентов TS в проект JS с помощью Bit



Постепенное внедрение TypeScript в ваш проект React.

Существует множество способов перехода с React JS на React TS. Цель этой статьи — показать, как это делается постепенно.

Подобный метод применим и в других случаях.

Основная идея состоит в том, чтобы максимально эффективно использовать компоненты React+, используя Bit для их изоляции друг от друга в собственной среде разработки Bit. В совокупности это позволяет собирать компоненты TS и безопасно внедрять их в полнофункциональное приложение React JS. Кусочек — это инструмент с открытым исходным кодом для извлечения компонентов из репозиториев Git. Bit позволяет собирать компоненты TS вне проекта, написанного на JS, предоставляя каждому автономную изолированную среду разработки, которая может работать в других проектах независимо от их конфигураций.

Затем вы можете просто создать версию и «побитово-импортировать» эти компоненты в свой JS-проект, и они будут работать.

Наряду с Bit существует Bit.dev – удаленный концентратор, в котором эти компоненты можно хранить для последующего повторного использования.

Мы сохраним компоненты TS в Bit.dev и оттуда введем их в наш проект React JS.

Постепенное внедрение TypeScript в ваш проект React.

Пример: поиск общих компонентов React в bit.dev

Пример использования

Для целей этой статьи мы рассмотрим пример, который во фронтенде сравним с классическим «hello world»: речь пойдет о приложении для планирования задач.

Не волнуйтесь, я не собираюсь рассказывать вам, как написать такое приложение на React. Я предполагаю, что вы уже умеете это делать и, скажем честно, тема далеко не новая, так что извините.

Но я приведу в качестве примера это приложение — вы вполне можете его форкнуть или хотя бы открыть ссылку и посмотреть весь его код.

Постепенное внедрение TypeScript в ваш проект React.

github.com/deleteman/react-todo-demo Эта база кода состоит из следующих компонентов: Список дел : Это основной компонент, отображаемый в виде поля ввода текста с самой обычной кнопкой.

Все находится в форме, и после отправки текст добавляется в список, поддерживаемый основным приложением.

Код этого компонента очень прост:

  
  
  
   

import React, { Component } from 'react' class TodoList extends Component { render() { return ( <div className="todoListMain"> <div className="header"> <form onSubmit={this.props.addItem}> <input placeholder="Задача" ref={this.props.inputElement} value={this.props.currentItem.text} onChange={this.props.handleInput} /> <button type="submit"> Add Task </button> </form> </div> </div> ) } } export default TodoList

TodoItems : очень простой компонент списка, используемый для отображения внутреннего списка элементов, добавленных с помощью предыдущего компонента.

Каждый из элементов кликабельен, и после нажатия на него он удаляется из списка.

Код также довольно прост:

import React, { Component } from 'react' class TodoItems extends Component { createTasks(item) { return <li key={item.key} onClick={() => this.props.deleteItem(item.key)}>{item.text}</li> } render() { const todoEntries = this.props.entries || [] const listItems = todoEntries.map(this.createTasks.bind(this)) return <ul className="theList">{listItems}</ul> } } export default TodoItems

В обоих случаях соответствующие методы принимаются как реквизиты из основного компонента приложения.

Полный код этого компонента показан здесь.

Согласен, это приложение очень простое, но, еще раз подчеркну, потенциально это может быть любое React-приложение, над которым вы сейчас работаете — и вдруг перед вами стоит задача начать миграцию на TypeScript. Что делать?

  • Вариант №1: Вытерев слезы, вы начинаете переписывать всю базу исходного кода.

  • Вариант №2: переименуйте все ваши файлы .

    js в .

    ts, настройте необходимые шаги в процессе сборки и умойте руки.

  • Вариант №3: Вы решаете, что действительно пора переходить к постепенной миграции всего старого кода, и писать весь новый код непосредственно на TypeScript.
Я хочу рассмотреть вариант №3 подробнее, но в принципе я не отрицаю того факта, что в одном приложении могут сосуществовать компоненты, написанные как на чистом JavaScript, так и на TypeScript.

Введите TypeScript

Итак, в качестве примера предположим, что нам поручено добавить кнопку переключения к каждому элементу в нашем списке дел.

После нажатия на элемент его нужно переключить в фоновом режиме.

Ничего сверхъестественного, но, как вы помните, нас в данном случае интересует процесс, а не код как таковой.

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

$ npx create-react-app ts-components --template typescript

Обратите внимание: для использования npx вам нужна только новая версия NPM, и она включена в процесс установки в версии 5.2.0 и выше.

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

Если вам интересно, как это делается, прочитайте следующую статью о том, как написать многоразовые компоненты .



import React, {useState} from 'react'; interface IActionProps {

Теги: #программирование #миграция #JavaScript #frontend #забавные задачи #typescript #рефакторинг #react

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.