Міграція з React JS на TypeScript Частина 1: Безпечна налаштування проекту
Прапорці суворості, структура tsconfig та поступова конверсія модулів, яка забезпечує можливість розсилки додатку.
У цьому посібнику описується процес створення можливості для міграції React-додатку з JavaScript на TypeScript (Частина 1): налаштування без пошкодження існуючого коду. Основна увага приділяється контрактам, перевіркам та коду, який можна додати до репозиторію без необхідності здогадуватися щодо його призначення.
Чому ви вирішили здійснити міграцію
Для розділу Чому ви вирішили здійснити міграцію необхідно визначити вхідні дані, відповідального за крок та критерії завершення перед зміною коду. Оператори повинні мати можливість знову виконати крок, починаючи з відомої точки контролю, без необхідності здогадуватися щодо прихованого стану. Краще використовувати невеликі, перевірювані одиниці коду замість об’ємних скриптів. Коли крок зазнає невдачі, причина має вказувати на конкретну проблему, а не на складну структуру процесу. Мігруйте модулі по одному, використовуючи флаги суворості, які при будь-якому новому використанні призводять до невдачі у тестуванні.
Крок 1: Встановити TypeScript
Для кроку 1: встановіть TypeScript, визначте вхідні дані, власника кроку та критерії завершення перед зміною коду. Оператори повинні мати можливість знову запустити крок з відомої точки контролю, не здогадуючись про прихований стан. Розглядайте цю стадію як контракт між вхідними даними та перевіреними результатами. Призначте назви artefaktам, визначте перевірки успіху та не допускайте беззвучного часткового завершення. Мігруйте модулі по одному, використовуючи прапорці суворості, які при будь-якому новому використанні призведуть до невдачі у тестуванні.
npm install -D typescript @types/react @types/react-dom @types/node
--save-dev
Чому встановлювати їх як залежності розробки?
Щодо питання «Чому встановлювати їх як залежності для розробки?», необхідно визначити вхідні дані, власника кроку та критерії завершення перед зміною коду. Оператори повинні мати можливість перезапустити крок з відомої точки контролю, не намагаючись вгадати прихований стан. Записуйте час виконання та витрати поруч із функціональними результатами. Рання видимість допомагає уникнути несподіваних рахунків, коли процес переходить від демо-середовища до спільних. Мігруйте модулі по одному, використовуючи прапорці суворості, які при будь-якому новому використанні призводять до невдачі у тестуванні.
Просте правило
Як просте правило, визначте вхідні дані, власника кроку та критерії завершення перед зміною коду. Оператори повинні мати можливість знову виконати крок з відомої точки контролю, не здогадуючись про прихований стан. Зберігайте конфігурацію поза кодом додатку. Файли середовища, сховища секретів та флаги функцій мають знаходитися в одному місці, де оператори можуть їх перевіряти, не читаючи весь граф. Мігруйте модулі по одному за допомогою флагів суворості, які при будь-якому новому використанні призводять до невдачі у тестуванні.
Крок 2: Створення конфігурації TypeScript
Для кроку 2: створіть конфігурацію TypeScript, визначте вхідні дані, власника кроку та критерії завершення перед зміною коду. Оператори повинні мати можливість знову запустити крок з відомої точки контролю, не намагаючись вгадати прихований стан. Документуйте як шлях успішного виконання, так і шлях відновлення одночасно. Повторні спроби, людський контроль та обробка некоректних повідомлень є частиною продукту, а не етапом подальшої оптимізації. Мігруйте модулі по одному, використовуючи прапорці суворості, які при будь-якому новому використанні призводять до невдачі у тестуванні CI. Для кроку 2: створіть конфігурацію TypeScript, визначте вхідні дані, власника кроку та критерії завершення перед зміною коду. Оператори повинні мати можливість знову запустити крок з відомої точки контролю, не намагаючись вгадати прихований стан. Розглядайте цю стадію як контракт між вхідними даними та перевіреними результатами. Позначте назви artefaktів, визначте перевірки успіху та не допускайте беззвучного часткового завершення.
npx tsc --init
Крок 3: Налаштування TypeScript для поступової міграції
Для кроку 3: Налаштування TypeScript для поступової міграції необхідно визначити вхідні дані, відповідальну особу за крок та критерії завершення перед зміною коду. Оператори повинні мати можливість знову запустити крок з відомої точки контролю, не намагаючись визначити прихований стан. Записуйте час виконання та витрати поруч із функціональними результатами. Раннє бачення допомагає уникнути несподіваних рахунків під час переходу від демо-середовищ до спільних. Для інтерфейсів, які згодом будуть редагуватися інструментами ШІ, краще використовувати композицію замість успадкування.
{
"allowJs": true,
"checkJs": false,
"noEmit": true
}
Що роблять ці опції?
Для чого потрібні ці опції? Перед зміною коду необхідно визначити вхідні дані, власника кроку та критерії завершення. Оператори повинні мати можливість перезапустити крок з відомої точки контролю, не здогадуючись про прихований стан. Зберігайте конфігурацію поза кодом додатку. Файли середовища, сховища секретів та флаги функцій мають знаходитися в одному місці, де оператори можуть їх перевіряти, не читаючи весь граф. Для інтерфейсів, які згодом будуть редагуватися інструментами ШІ, краще використовувати композицію замість успадкування.
Крок 4: Мігрувати main.jsx у main.tsx
Для кроку 4: Перенесіть main.jsx у main.tsx, визначте вхідні дані, власника кроку та критерії завершення перед зміною коду. Оператори повинні мати можливість знову запустити крок з відомої точки контролю, не здогадуючись про прихований стан. Одночасно задокументуйте шлях успішного виконання та шлях відновлення. Повторні спроби, людський контроль та обробка некоректних повідомлень є частиною продукту, а не етапом подальшої оптимізації. Для інтерфейсів, які згодом будуть редагуватися інструментами ШІ, віддавайте перевагу композиції перед успадкуванням.
1. CSS Imports
1. CSS Imports: перед зміною коду необхідно визначити вхідні дані, виконавця кроку та критерії завершення. Оператори мають мати можливість перезапустити крок з відомої точки контролю, не намагаючись вгадати прихований стан. Краще використовувати невеликі, перевірювані одиниці коду замість об’ємних скриптів. Якщо крок зазнає невдачі, причина має вказувати на конкретну відповідальність, а не на заплутану структуру обробки даних. Для інтерфейсів, які згодом будуть редагуватися інструментами ШІ, краще використовувати принцип композиції замість спадкування.
import "./index.css";
/// <reference types="vite/client" />
import "./index.css";
import logo from "./logo.svg";
2. Робота з значеннями, які можуть бути null
Для пункту 2. Робота з значеннями, які можуть бути null, необхідно визначити вхідні дані, власника кроку та критерії завершення перед зміною коду. Оператори повинні мати можливість перезапустити крок з відомої точки контролю, не намагаючись вгадати прихований стан. Розглядайте цю стадію як контракт між вхідними даними та перевіреними результатами. Призначте назви елементів, визначте критерії успіху та не допускайте беззвучного часткового завершення. Для інтерфейсів, які згодом будуть редагуватися інструментами ШІ, віддавайте перевагу композиції перед успадкуванням.
document.getElementById("root")
HTMLElement | null
document.getElementById("root")!
<div id="root"></div>
const rootElement = document.getElementById("root");
if (rootElement) {
createRoot(rootElement).render(<App />);
}
Чому цей підхід спрацював
У розділі Чому цей підхід спрацював необхідно визначити вхідні дані, відповідальну особу за кожен крок та критерії завершення перед зміною коду. Оператори повинні мати можливість перезапустити крок з відомої точки контролю, не намагаючись вгадати прихований стан. Записуйте час виконання та витрати поруч із функціональними результатами. Рання видимість допомагає уникнути несподіваних рахунків, коли процес переходить від демо-версії до спільних середовищ. Для інтерфейсів, які згодом будуть редагуватися інструментами ШІ, краще використовувати композицію замість успадкування.
Що ви дізналися
Щодо того, що ви дізналися: перед зміною коду необхідно визначити вхідні дані, власника кроку та критерії завершення. Оператори повинні мати можливість перезапустити крок з відомої точки контролю, не здогадуючись про прихований стан. Конфігурацію слід тримати окремо від коду додатку. Файли середовища, сховища конфіденційних даних та флаги функцій мають знаходитися в одному місці, де оператори можуть їх перевіряти, не читаючи весь код. Для інтерфейсів, які згодом будуть редагуватися інструментами ШІ, краще використовувати композицію замість успадкування.
Підсумок
На завершення необхідно визначити вхідні дані, власника кроку та критерії завершення перед зміною коду. Оператори повинні мати можливість знову виконати крок з відомої точки контролю, не намагаючись вгадати прихований стан. Необхідно документувати як шлях успішного виконання, так і шлях відновлення. Повторні спроби, людський контроль та обробка некоректних повідомлень є частиною продукту, а не етапом подальшої оптимізації. Для інтерфейсів, які згодом будуть редагуватися інструментами ШІ, краще використовувати принцип композиції замість спадкування. На завершення необхідно визначити вхідні дані, власника кроку та критерії завершення перед зміною коду. Оператори повинні мати можливість знову виконати крок з відомої точки контролю, не намагаючись вгадати прихований стан. Розглядайте цю стадію як контракт між вхідними даними та перевіреними результатами. Позначте всі елементи, визначте критерії успіху та не допускайте безповідомного часткового завершення роботи.
Спробуйте PrepFlow
Для Try PrepFlow необхідно визначити вхідні дані, власника кроку та критерії завершення перед зміною коду. Оператори повинні мати можливість перезапустити крок з відомої точки контролю, не намагаючись вгадати прихований стан. Записуйте час виконання та витрати поруч із функціональними результатами. Раннє виявлення дозволяє уникнути несподіваних рахунків під час переходу з демо-середовища у спільні. Розміщуйте типи разом із компонентами та обмежуйте кількість параметрів. Велика кількість параметрів стає боргом, який TypeScript мав би запобігати.
Чек-лист операцій
Для чек-листу операцій необхідно визначити вхідні дані, власника кроку та критерії завершення перед зміною коду. Оператори повинні мати можливість перезапустити крок з відомої точки контролю, не намагаючись вгадати прихований стан.
Віддавайте перевагу невеликим, тестованим одиницям перед об’ємними скриптами. Коли крок зазнає невдачі, причина має вказувати на конкретну відповідальність, а не на заплутану систему обробки даних.
Розміщуйте типи разом із компонентами та тримайте властивості обмеженими. Велика кількість властивостей стає боргом, якого мав запобігти TypeScript.
Напишіть короткий посібник: як змінювати ключі, як спорожнювати чергу, як скасовувати останні зміни.
Розглядайте цей етап як контракт між вхідними даними та перевіреними результатами. Позначте результати роботи, визначте критерії успіху та не допускайте мовчазного часткового завершення.
Розміщуйте типи разом із компонентами та тримайте властивості обмеженими. Велика кількість властивостей стає боргом, якого мав запобігти TypeScript.
Перш ніж піднімати стек на вищий рівень, заморозьте версії, зафіксуйте ідеальний варіант для критичного шляху та підтвердьте кроки скасування. У спільних середовищах потрібні обмеження на частоту використання, перевірки прав доступу та чіткий власник для зміни секретів. Віддавайте перевагу надійності перед креативними одноразовими демонстраціями.