Міграцыя з React JS на TypeScript Частка 1: Безпечная наладка праекта
Частка 1 перахоўкі React JS у TypeScript: флагі строгасці, структура tsconfig, пераклад канфайлам JSX модуль за модулем і падтрымка працы прыложэння ўвесь час.
Крыніцы: Migrating my React App from JavaScript to TypeScript (Part 1): Setup Without Breaking Anything
У гэтым карыце практычным наставленні разбіраецца, як стварыць можлівасць для міграціі 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.
Перш чым паднісце стэк на вышэйшы ранг, заморозьце версіі, зафіксуйце ідэальны варыянт для крытычнага маршруту і падтвердзіце крокі для вярнуць пачатковага стану. У спільных срэдах неабходны ліміты частоты запуска, перакананні ў прыналежнасці і чыстае вакалванне адпаведальнага адносу за роцыяванне секрэтных дадзенняў. Валіце надзейнасць працы над крэатыўнымі разовымі дамах.