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