Tsx ΡΡΠΎ Π·Π° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅
TypeScript: ΠΊΠ°ΠΊ Ρ Π½ΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ ΡΠ΅ΠΌ ΠΎΠ½ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ JavaScript
Frontend-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ°Π³Π½ΡΠ»Π° Π΄Π°Π»Π΅ΠΊΠΎ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ JavaScript. Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌΡΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ TypeScript ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ Π΅Π³ΠΎ ΡΠ°ΠΊ Π»ΡΠ±ΡΡ.
ΠΠ° JavaScript Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅Ρ ΡΠ°ΠΉΡΠΎΠ². ΠΠ΄Π½Π°ΠΊΠΎ Π½Π΅ Π²ΡΠ΅ Π΅Π³ΠΎ Π»ΡΠ±ΡΡ, Π° Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ² ΠΏΠΎΡΡΠΈ Π½Π΅Ρ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½Ρ JS β WebAssembly, ΠΎΠ΄Π½Π°ΠΊΠΎ Π·Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ½ ΠΏΠΎΠΊΠ° Π½Π΅ ΡΠΌΠΎΠ³ ΡΡΠ°ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ.
ΠΠ·-Π·Π° ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ°ΡΠΊΠ»Π°Π΄Π° Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΎΡΡΠ°ΡΡΡΡ Π΄Π²Π° Π²ΡΡ ΠΎΠ΄Π°:
Π ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π²ΡΠ±ΠΈΡΠ°ΡΡ Π²ΡΠΎΡΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΠΎΡΡΠΎΠΌΡ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π³ΠΎΠ΄Ρ ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ·ΡΠΊΠΎΠ²-Π½Π°Π΄ΡΡΡΠΎΠ΅ΠΊ Π½Π°Π΄ JavaScript:
Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΠΈ ΠΏΠΎΠΉΠ΄ΡΡ ΡΠ΅ΡΡ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅. Π 2019 Π³ΠΎΠ΄Ρ TypeScript ΡΡΠ°Π» ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΠΌΡΡ Π»ΡΠ±ΠΈΠΌΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΠΏΠ°Π» Π² ΡΠΎΠΏ-10 ΠΏΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΠΈ:
ΠΠΈΡΠ΅Ρ ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈΠ³ΡΡ. ΠΠ΅ΡΡΠ°Π΅Ρ ΠΎΡΠΊΡΡΡΡ ΡΠ²ΠΎΡ ΡΡΡΠ΄ΠΈΡ ΠΈ Π²ΡΠΏΡΡΠΊΠ°ΡΡ Π»Π°ΠΌΠΏΠΎΠ²ΡΠ΅ RPG.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ TypeScript
TypeScript β ΡΡΠΎ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ JavaScript. ΠΠΎΠ΄ Π½Π° TypeScript Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΠΎΡΡΠΈ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΊΠΎΠ΄ Π½Π° JS, ΠΈ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΎΠΏΡΡ frontend-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΈΠ·ΡΡΠΈΡΡ TypeScript Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΡΠΈΡΡΠ²Π°Ρ, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΈΡΠ°ΡΡ JS-ΠΊΠΎΠ΄ ΠΏΡΡΠΌΠΎ Π² TS-ΡΠΊΡΠΈΠΏΡΠ°Ρ .
ΠΠΎΠ΄ Π½Π° TypeScript ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² JS ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π»ΡΠ±ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΏΠΎΠ΄ Π»ΡΠ±ΡΠ΅ Π±ΡΠ°ΡΠ·Π΅ΡΡ β ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ Π²Π΅ΡΡΠΈΡ JS, Π² ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΊΠΎΠ΄.
TypeScript β ΠΏΡΠΎΠ΅ΠΊΡ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ. ΠΠ½ΠΎΠ³ΠΎΠ΅, ΡΡΠΎ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π² TS, ΠΏΠΎΠ·ΠΆΠ΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ ΠΈ Π² JavaScript: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, let ΠΈ const, ΡΡΡΠ΅Π»ΠΎΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΡΠΌ Π΄Π²Π° Π³Π»Π°Π²Π½ΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° TS ΠΏΠ΅ΡΠ΅Π΄ JS.
Π‘ΡΡΠΎΠ³Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ
ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² JavaScript ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΠΈΠ·-Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π² ΡΠ΅Π»ΠΎΠΌ ΡΡΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ :
Π TypeScript ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ, ΡΡΠΎ ΠΈΠ·Π±Π°Π²Π»ΡΠ΅Ρ ΠΎΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΡΡΡ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΠΏ, ΡΡΡΠΎΠΊΠΎΠ²ΡΠΉ, Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΠΈ ΡΠ²ΠΎΠΈ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ enum:
Π£Π»ΡΡΡΠ΅Π½Π½ΠΎΠ΅ ΠΠΠ
Π Π² JS, ΠΈ Π² TS Π΅ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ: ΠΊΠ»Π°ΡΡΡ, ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ TypeScript ΡΠ°Π³Π½ΡΠ» ΡΡΡΡ Π΄Π°Π»ΡΡΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΠΠ. Π ΡΠΎΠΌ ΡΠΈΡΠ»Π΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ:
ΠΡΡΠ³ΠΎΠΉ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠ»ΡΡ β ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ Π΄ΠΎΡΡΡΠΏΠ°. ΠΡ Π² TypeScript ΡΡΠΈ: public, private ΠΈ protected. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ:
Π Π±ΡΠ΄ΡΡΠ΅ΠΌ Π²ΡΡ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ ΠΈ Π² JavaScript, Π½ΠΎ Π±ΡΠ°ΡΠ·Π΅ΡΡ Π½Π°ΡΠ½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΅ΡΡ ΠΎΡΠ΅Π½Ρ Π½Π΅ΡΠΊΠΎΡΠΎ.
ΠΠΈΠ½ΡΡΡ TypeScript
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π»ΡΠ±ΡΡ ΡΡΠΎΡ ΡΠ·ΡΠΊ, Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΡΡΠΏΠ½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ ΡΠΆΠ΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΡΡ Π½Π° Π½Π΅Π³ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Angular.JS. ΠΠΎ ΡΡΠΎΠ³ΠΎ Π²ΡΡ ΡΠ°Π²Π½ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΡΡΠ°Π» ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ Π²ΠΎΡΡΡΠ΅Π±ΠΎΠ²Π°Π½Π½ΡΠΌ, ΠΊΠ°ΠΊ JavaScript. ΠΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° TypeScript ΡΡΠΎΠΈΡ Π΄ΠΎΡΠΎΠΆΠ΅ ΠΈ ΠΎΡΠ½ΠΈΠΌΠ°Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊΡΡ-Π½ΠΈΠ±ΡΠ΄Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΈΠ»ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ Π½Π° TS. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΏΡΠΈΠ΄ΡΡΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠΈΠ³Π½Π°ΡΡΡΡ (ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ ) Π²ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² β Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, ΡΡΠΈΡΡΠ²Π°Ρ ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ.
Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΡΠΎΠ³ Π²Ρ ΠΎΠ΄Π° Π² TypeScript Π²ΡΡΠ΅ β ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°, Π²Π°ΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° TypeScript
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ TypeScript, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ½Π°ΡΠ°Π»Π° Node.JS. ΠΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π² Π½Π°ΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²Π²Π΅Π΄ΠΈΡΠ΅ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
ΠΡΠ»ΠΈ Π²ΡΡ ΠΏΡΠΎΠΉΠ΄ΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΡΠΎ Π² ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΡΠ°ΠΉΠ» app.js, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠΌ ΠΊ ΡΡΡΠ°Π½ΠΈΡΠ΅.
Π compilerOptions Ρ ΡΠ°Π½ΡΡΡΡ Π²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°:
ΠΠΈΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° TypeScript
Π’Π΅ΠΏΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΊΠΎΠ΄ Π΄Π»Ρ Π½Π΅Π³ΠΎ Π½Π° JS ΠΈ Π½Π° TS. Π‘Π½Π°ΡΠ°Π»Π° ΡΠ²Π΅ΡΡΡΠ°Π΅ΠΌ ΡΠΎΡΠΌΡ:
ΠΠ΄Π΅ΡΡ Π΄Π²Π° ΠΏΠΎΠ»Ρ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° ΡΠΈΡΠ΅Π», ΠΊΠ½ΠΎΠΏΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΡΠΊΡΠΈΠΏΡ ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°:
ΠΠΎΠ΄ TypeScript Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
Π ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ JS-ΠΊΠΎΠ΄ Π΄Π»Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π²ΠΎΡ ΡΠ°ΠΊ:
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ ΡΡΠΎ Π² TypeScript ΠΎΡΠ΅Π½Ρ Π΄ΠΎΡΡΠΎΠΉΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, JavaScript Π΅ΡΡ Π΄ΠΎΠ»Π³ΠΎ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ Π²ΠΎ frontend-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅. ΠΠΎΡΡΠΎΠΌΡ Π΅Π³ΠΎ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ½ Π²Π°ΠΌ Π½Π΅ Π½ΡΠ°Π²ΠΈΡΡΡ.
ΠΡΠ»ΠΈ Π²Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΡΡΡΠΏΠ°Π΅ΡΠ΅ ΠΊ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡ Ρ TypeScript Π±ΡΠ΄Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎ. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΠΈΡΠ°ΡΡΡΡ Π½Π° Π½Π°Ρ ΠΊΡΡΡ ΠΏΠΎ frontend-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ β Π²Ρ ΠΎΡΠ²ΠΎΠΈΡΠ΅ HTML, CSS, JS ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ.
TypeScript ΠΈ React Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ create-react-app: ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠ· ΡΡΠΎΠ³ΠΎ ΡΡΡΠΎΡΠΈΠ°Π»Π° Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ Π±ΡΡΡΡΠΎ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ React Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ TypeScript Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ create-react-app (CRA). ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π½Π° Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ ΡΠΆΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Node ΠΈ NPM. ΠΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ TypeScript/React Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ CRA. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡ props ΠΈ state, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ TypeScript.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ create-react-app
create-react-app ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ React Ρ ΡΠ°Π·ΡΠΌΠ½ΡΠΌΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ΠΡΠΎΡ ΡΠ°Π³ ΡΠ΅ΠΏΠ΅ΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ. TypeScript ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ npx, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅.
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ React Ρ ΠΏΠΎΠΌΠΎΡΡΡ TypeScript
ΠΡΠ·ΠΎΠ²ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ create-react-app Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΎΠΏΡΠΈΠ΅ΠΉ TypeScript, ΡΡΠΎΠ±Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ React Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ TypeScript Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° JS ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
ΠΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ ΡΡΡΡΠΊΡΡΡΡ ΠΏΠ°ΠΏΠΎΠΊ:
ΠΠΈΠΆΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ°ΡΡΠΈ:
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ React ΠΏΠΎΠ΄ TypeScript
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ React Ρ TypeScript, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²Π½Π΅ΡΡΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ React.
ΠΠΌΠΏΠΎΡΡ React ΠΈ ReactDOM
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
Π‘ TypeScript Π²Ρ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π΅Π»Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΡ ΡΠΈΠ΄Π°:
React ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠ΄ΡΠ»Ρ CommonJS, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ default export. ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΡΠ½ΠΎ Π·Π½Π°ΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ, Π° ΠΏΡΠΎΡΡΠΎ Π·Π½Π°ΡΡ, ΠΊΠ°ΠΊ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ React, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π». ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Ρ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΠ΅ ΡΠ²ΠΎΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΊΠ°ΠΊ:
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ
ΠΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ props Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΌ Π²Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. ΠΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ Π³Π΄Π΅ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ²ΠΎΠΉ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ . ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ (state) ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ.
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π±Π΅Π· Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ
Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Ρ props, ΠΌΡ Π·Π°ΠΌΠ΅Π½ΠΈΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ
ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΠΈΠΌΠΏΠΎΡΡΠ° React. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ IProps Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ name. ΠΡ ΡΠΊΠ°Π·Π°Π»ΠΈ ΡΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ, ΡΡΠΎ Π·Π°Π΄Π°Π΅ΡΡΡ ΡΠΈΠΌΡΠΎΠ»ΠΎΠΌ β?β. ΠΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ° ΠΊΠ°ΠΊ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ»ΠΈ string ΠΈΠ»ΠΈ undefined.
ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Header, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° React.SFC
. Β«SFCΒ» ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π±Π΅Π· ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π² ΠΏΡΠΎΡΠΎΡΠΈΠΏ. Π₯ΠΎΡΡ ΡΡΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ, ΠΎΠ½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ defaultProps.
ΠΠ°Π»Π΅Π΅, ΠΌΡ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌ ΡΠΈΠΏ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΊΠ°ΠΊ IProps, ΡΡΡΠ»Π°ΡΡΠΈΠΉΡΡ Π½Π° ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Π½Π°ΠΌΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ.
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ°
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΠΎΡΠ½ΠΎΠ²Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΊΠ»Π°ΡΡΠ°, ΠΌΡ Π·Π°ΠΌΠ΅Π½ΠΈΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅
Π² App.tsx Π½Π° ΡΡΠ΅ΡΡΠΈΠΊ. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»Π°ΡΡΠΎΠΌ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ²ΠΎΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅. ΠΡΡΠ³ΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΎΡΠ»ΠΈΡΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°, ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π°.
ΠΡ Π½Π°ΡΠ½Π΅ΠΌ Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΄Π»Ρ IProps ΠΈ IState. ΠΡΠ΄Π΅Ρ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΠ΅ΡΡΠΈΠΊ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ΅ΡΡΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΡΠ°ΡΠ΅Π½ΠΈΡ. Π‘Π°ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π±ΡΠ΄Π΅Ρ Π²Π΅ΡΡΠΈ ΠΏΠΎΠ΄ΡΡΠ΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ²ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅.
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ Ρ ΡΠΈΠΏΠ°ΠΌΠΈ IProps ΠΈ IState ΠΊΠ°ΠΊ class Description extends React.Component < ΠΈ defaultProps ΠΎΠ±ΡΡΠ²Π»Π΅Π½ ΠΊΠ°ΠΊ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ. State ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΡΠΎ ΡΡΠ΅ΡΡΠΈΠΊΠΎΠΌ 0.
ΠΠ°ΡΠ΅ create-react-app Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ TypeScript
ΠΠ½ΡΡΡΠΈ Π½Π°ΡΠ΅Π³ΠΎ App.tsx ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈ Π·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌ HTML ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΠ· CRA. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ name ΠΈ countBy Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠΈΠΏΠ°ΠΌ, ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΠΌ Π² Π΄ΠΎΡΠ΅ΡΠ½Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ props ΡΠ²Π»ΡΡΡΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ, ΠΎΠ½ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ undefined, ΠΈ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ defaultProps.
Π ΡΡΠΎ Π²ΡΠ΅, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°Π±ΠΎΡΡ Ρ TypeScript Π² React! Π§ΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ React JSX Π²ΠΌΠ΅ΡΡΠ΅ Ρ TypeScript 1.6
ΠΠ΅ ΡΠ°ΠΊ Π΄Π°Π²Π½ΠΎ Microsoft ΠΎΠ±ΡΡΠ²ΠΈΠ»Π° ΠΎ Π²ΡΠΏΡΡΠΊΠ΅ TypeScript 1.6 Beta, ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ , Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° React/JSX, ΡΡΠΎ Π² ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΠΈ Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΠΌΠΈ TypeScript’Π° ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ Π½ΠΎΠ²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ.
Π― ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎ Π»ΠΈΡΠ½ΠΎΠΌ ΠΎΠΏΡΡΠ΅ β ΠΊΠ°ΠΊ Π½Π°ΡΠ°Π» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΡΠ·ΠΊΡ TypeScript + React, Ρ ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ ΡΠ΅ΡΠ°Π». Π ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΠΎΠΊΠ°ΠΆΡ ΠΏΡΠΈΠΌΠ΅ΡΡ gulp-ΡΠ°ΡΠΊΠΎΠ² Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΡΠΎ Π²ΡΠ΅ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ ΠΈ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡ ΠΊΠΎΠ΄ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ todo ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° TypeScript + React (ΡΡΡΠ»ΠΊΠ° Π½Π° Github).
TypeScript 1.6
ΠΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ½Π΅ΡΠ»ΠΎ ΡΡΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅:
ΠΠ°ΠΉΡΠΈΠ²Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° JSX
Β«ΠΠ°Ρ!Β» β Π²ΠΎΡ ΠΏΠ΅ΡΠ²Π°Ρ ΠΌΡΡΠ»Ρ, ΠΊΠΎΠ³Π΄Π° Ρ ΠΏΡΠΎΡΠΈΡΠ°Π» Π°Π½ΠΎΠ½Ρ. ΠΠΎ Π΄Π°Π»ΡΡΠ΅ Π½Π°ΡΠ°Π»ΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π΅Π»ΡΠ·Ρ ΠΏΡΠΎΡΡΠΎ Π²Π·ΡΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ edge-ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, Π½Π°ΡΠ°ΡΡ ΠΏΠΈΡΠ°ΡΡ ΠΊΠ»Π°ΡΡΠ½ΡΠΉ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΎ ΡΠ±ΠΎΡΠΊΠΎΠΉ ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠ΅ΠΌ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ°
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±ΡΠ΄Π΅ΠΌ ΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ Ρ Π½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ ΠΈ Π½Π°ΡΡΡΠΎΠ΅Π½Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ nodejs ΠΈ npm.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° TypeScript 1.6 Beta
ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ TypeScript 1.6 Beta Π² Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Ρ Π²Π°Ρ Π² ΠΊΠΎΠ½ΡΠΎΠ»Π΅ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° tsc β ΡΡΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈ Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π΄Π»Ρ TypeScript. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ ΡΡΠΎ Ρ Π²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° Π²Π΅ΡΡΠΈΡ 1.6-beta.
ΠΡΠΎΠ²Π΅ΡΠΈΠΌ, ΡΡΠΎ Π²ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΎΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
ΠΠ»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ package.json
Π€Π°ΠΉΠ» package.json ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ: Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Π²Π΅ΡΡΠΈΡ, Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈ ΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅. ΠΡΠ±Π°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π΅ΡΡΡ ΡΡΠΎΡ ΡΠ°ΠΉΠ», ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ Node.js-ΠΏΠ°ΠΊΠ΅Ρ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ.
Π‘ΠΏΠΎΡΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° package.json Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ΡΡ Π»ΠΈ Π²Ρ ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡ ΠΏΠ°ΠΊΠ΅Ρ ΠΈΠ»ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°:
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ gulpfile.js
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» gulp, Π½ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎ ΠΌΠ½Π΅, ΠΎΡΠΎΠ±ΠΎΠΉ ΡΠ°Π·Π½ΠΈΡΡ Π½Π΅Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π³Π»Π°Π²Π½ΠΎΠ΅ β ΠΈΠ΄Π΅Ρ. ΠΠ»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΌΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠΆΠ΅ Π³ΠΎΡΠΎΠ²ΡΠΌΠΈ npm ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ: gulp-typescript Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ TypeScript ΠΈ browserify Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ TypeScript
Π’Π°ΡΠΊ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ TypeScript Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·Π°Π»ΠΈ ΡΠ°Π½Π΅Π΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ β Π½Π° github ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
browserify
Π’Π°ΡΠΊ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±Π°Π½Π΄Π»Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ index.html
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΈ ΠΈΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² gulp ΠΏΡΠΈΠ²Π΅Π΄Ρ ΠΏΡΠΈΠΌΠ΅Ρ gulp-ΡΠ°ΡΠΊΠ° Π΄Π»Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ index.html Π² ΠΏΠ°ΠΏΠΊΡ dist:
gulpfile.js ΡΠ°ΠΉΠ»
Π’ΠΎΠ³Π΄Π° Π²Π΅ΡΡ gulpfile.js Π±ΡΠ΄Π΅ΠΌ ΡΠ°ΠΊΠΈΠΌ:
TypeScript Definitions
Π― ΡΠ΅ΠΉΡΠ°Ρ Π½Π΅ Π±ΡΠ΄Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π½Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ TypeScript Definitions, ΠΎΠ± ΡΡΠΎΠΌ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ½ΡΡ ΡΡΠ°ΡΠ΅ΠΉ. Π‘ΠΊΠ°ΠΆΡ Π»ΠΈΡΡ, ΡΡΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π½Π° JS Π΄Π»Ρ Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈ ΡΠ°ΠΌΡΠ΅ TypeScript Definitions. Π Π΅ΡΡΡ Π΄Π°ΠΆΠ΅ ΡΠ΅Π»ΡΠΉ ΠΎΠΏΠ΅Π½ΡΠΎΡΡΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π°ΡΠΎΠ΄ ΠΏΠΈΡΠ΅Ρ ΡΠ°ΠΊΠΈΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ΅Π½Ρ Π΄Π»Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². ΠΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΊΠ°ΡΡ ΠΈ ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡ Π½Π° ΡΠ°ΠΉΡΠ΅, Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΡ ΡΡΠΈΠ»ΠΈΡΡ ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΏΡΠΎΡΡΠΈΡ:
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠΉ ΡΡΠΈΠ»ΠΈΡΡ ΠΌΡ ΡΠΊΠ°ΡΠ°Π΅ΠΌ definitions Π΄Π»Ρ React ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΠΌ Π² ΡΠ°ΠΉΠ» tsd.json Π·Π°ΠΏΠΈΡΡ ΠΎ TypeScript Definition:
ΠΡΠΎΠ΅ΠΊΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² open-source, ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ ΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΠΌ β borisyankov/DefinitelyTyped.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ tsconfig.json
Π€Π°ΠΉΠ» tsconfig.json Ρ ΡΠ°Π½ΠΈΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°. Π’Π°ΠΊΠΎΠΉ ΡΠ°ΠΉΠ» ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 1.5. ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ tsconfig.json, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ React/JSX Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
React-ΠΊΠΎΠ΄
ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠ°Π±ΠΎΡΡ ΡΠ²ΡΠ·ΠΊΠΈ TypeScript + React ΠΌΡ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ todo ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
todoItem.tsx ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ
ΠΠ°ΡΠ½ΡΠΌ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΎΠ³ΠΎ ΠΊΠΈΡΠΏΠΈΡΠΈΠΊΠ°, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ β TodoItem. ΠΠΎΠ±Π°Π²ΠΈΠΌ TypeScript Definition Π΄Π»Ρ React Π² Π½Π°ΡΠ°Π»ΠΎ ΡΠ°ΠΉΠ»Π°:
ΠΠ°ΡΠ΅ΠΌ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ React Π² Π½Π°Ρ ΠΊΠ»Π°ΡΡ:
ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ITodo Π΄Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°:
Π ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π΄Π»Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΈ ΡΠ²ΠΎΠΉΡΡΠ² Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°:
Π’ΠΎΠ³Π΄Π° ΡΠ°ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
main.tsx ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ
ΠΠ°Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΈΠ½ΡΠΈΠΏ ΡΠΎΡ ΠΆΠ΅, ΡΡΠΎ ΠΈ Π² TodoItem ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈΠ²Π΅Π΄Ρ ΠΏΠΎΠ»Π½ΡΠΉ Π»ΠΈΡΡΠΈΠ½Π³ ΡΠ°ΠΉΠ»Π°:
bootstrap.ts
ΠΠ°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» ΡΠ»ΡΠΆΠΈΡ ΡΠΎΡΠΊΠΎΠΉ Π΄Π»Ρ ΡΡΠ°ΡΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π»ΠΎΠ³ΠΈΠΊΡ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΎΡΠ½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°:
index.html
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ»ΡΠ»ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΡΠΈΠ»Π΅ΠΉ ΠΈ ΡΠ΄, ΡΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΠ°ΠΉΠ»Π° Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΈΠΌ:
ΠΠ°ΠΏΡΡΠΊ ΠΈ ΡΠ΅ΠΉΠ΅ΡΠ²Π΅ΡΠΊΠΈ
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π±ΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½Ρ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΏΠ°ΠΏΠΊΠΈ ΠΈ ΡΠ°ΡΠΊΠΈ, Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ:
Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π²ΡΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈ:
Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ°ΠΏΡΡΠΊ
Π’ΡΡ Π²ΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΠ·Π°ΠΈΡΠ½ΠΎ β Π½Π°ΡΡΠ°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π»ΡΠ±ΠΈΠΌΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ Π½Π° ΠΏΠ°ΠΏΠΊΡ dist ΠΈ ΡΠ°Π΄ΡΠ΅ΠΌΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊ:
ΠΠ°ΡΠ΅ΠΌ ΠΈΠ΄ΡΠΌ Π½Π° localhost:3000/index.html ΠΈ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌ.
ΠΠΌΠ΅ΡΡΠΎ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ
ΠΠ΅ΡΡ ΠΊΠΎΠ΄ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Π² ΡΡΠΎΠΌ ΠΌΠΈΠ½ΠΈ-Π³Π°ΠΉΠ΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅. ΠΡΠ±ΡΠ΅ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΡ ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ.
⚛️ 12 ΡΠΎΠ²Π΅ΡΠΎΠ² ΠΏΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ TypeScript Π² React-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ
Π‘Π΅ΡΠ³Π΅ΠΉ ΠΡΠ°Π²ΡΠ΅Π½ΠΊΠΎ
ΠΠ°ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ TypeScript Π² React?
React β ΡΡΠΎ JavaScript-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², Π° TypeScript β ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π½Π°Π΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ JavaScript. ΠΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡ ΠΈΡ , ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ JavaScript. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π±ΠΎΠ»ΡΡΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΈ ΠΌΠ΅Π½ΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ Π²ΠΎ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ.
ΠΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π° React Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ TypeScript. ΠΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠΌΠΈ, Π΅ΡΠ»ΠΈ Π²Π°Ρ ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π²Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΡΠΎ-ΡΠΎ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ.
ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΊ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ TypeScript
Bit.dev ΡΡΠ°Π» ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠΉ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΎΠΉ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ±ΡΠ°ΡΡ ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ ΠΈΠ· Π»ΡΠ±ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ.
Π‘ΠΎΠ·Π΄Π°Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ React Ρ TS, Π²Ρ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Π°ΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΡΡΠ½Ρ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ. ΠΡΠΎ ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ tsconfig.json
Π‘Π°ΠΌΡΠΉ Π±ΡΡΡΡΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ React/TypeScript β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ create-react-app Ρ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ TypeScript:
tsconfig.json ΡΡΠΎ ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ TypeScript. Π€Π°ΠΉΠ» ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Ρ ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΡΠΌΠΈ:
Enums
Enums ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½Π°Π±ΠΎΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ Π΅Π΄ΠΈΠ½ΠΎΠΉ ΡΡΡΠ½ΠΎΡΡΠΈ.
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΈ ΡΠΈΠΏΡ
Π§ΡΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ β ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡ ΡΠΈΠΏΠΎΠ²? Π₯ΠΎΡΡ ΡΡΠΈ ΡΡΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½Ρ, Π½Π° Π΄Π΅Π»Π΅ ΠΎΠ½ΠΈ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠΈ:
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ Π΄Π΅Π»Π°ΡΡ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡ ΡΠΈΠΏΠΎΠ² β ΡΡΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠΉ.
Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² HTML
ΠΠ½ΠΎΠ³Π΄Π° Π²Π°ΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ HTML-ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ. Π ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ Π»ΡΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΈΠΏ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΊΠ°ΠΊ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ HTML ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅.
Π’ΠΈΠΏΡ ΡΠΎΠ±ΡΡΠΈΠΉ
React ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΡΠΎΠ±ΡΡΠΈΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ±ΡΡΠΈΡ HTML. ΠΠ΄Π½Π°ΠΊΠΎ Ρ Π²Π°Ρ Π΅ΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠΎΠ±ΡΡΠΈΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΡΡΠ»Π°Π΅ΡΠ΅ΡΡ Π½Π° Π½ΠΈΡ Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ Π½Π΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ ΠΈΠ· React ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Generics Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΌ ΡΠΎΠ±ΡΡΠΈΠΉ.
Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ:
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°
Π‘ΡΠΎΠΈΡ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ ΡΠ°ΠΉΠ»Ρ index.d.ts ΠΈ global.d.ts Π² React. ΠΠ±Π° ΠΎΠ½ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΠ΅ React Π² ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΡΠΈ ΡΠ°ΠΉΠ»Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ²: ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈΠ»ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΊΡΡΡΡ ΡΡΠΈ ΡΠ°ΠΉΠ»Ρ ΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅.
index.d.ts » data-src=»https://media.proglib.io/posts/2021/01/20/bf2cf9687a65d39e7bd4506bfdbd507a.png» > index.d.ts
ESLint/Prettier
Π§ΡΠΎΠ±Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ Π²Π°Ρ ΠΊΠΎΠ΄ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π° ΡΡΠΈΠ»Ρ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π½Π°ΡΡΡΠΎΠΈΡΡ ESLint ΠΈ Prettier :
Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΊΠΎΠ΄Π° VS
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π³ ΠΏΠΎ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ β Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΊΠΎΠ΄Π° ΠΏΡΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠΈ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ESLint ΠΈ Prettier Π΄Π»Ρ VS Code. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ESLint Π»Π΅Π³ΠΊΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Ρ Π²Π°ΡΠΈΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΎΠΌ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΈΠΏ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊ:
ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ Ρ ΡΠΊΠ° ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ null, ΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΊΠΎΠ΄ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠ»Ρ ΡΡΠΈΡ ΡΠ»ΡΡΠ°Π΅Π² TypeScript ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠΈΠΏ:
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΎΠ±ΡΡΠΈΠΉ ΡΠΎΡΠΌΡ
Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²
ΠΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΈΡΠΈΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, ΠΈ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΈΡ Π² Π΄ΡΡΠ³ΠΎΠΌ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ type:
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ interface, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ extends, ΡΡΠΎΠ±Ρ ΡΠ°ΡΡΠΈΡΠΈΡΡ Π΅Π³ΠΎ, Π½ΠΎ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²Π½Π΅ΡΡΠΈ ΠΏΠ°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ:
Π‘ΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
ΠΡ ΡΠ°ΡΡΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡΡ React ΠΈ TypeScript. Π ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΡΡΠΎΠΈΡ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, Π΅ΡΡΡ Π»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ @types Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΠΌΠΈ ΡΠΈΠΏΠΎΠ²:
ΠΡΠΎΠ³ΠΈ
Π‘ΡΠ°ΡΡΡΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π½Π° React ΠΈ TypeScript
ΠΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ ΡΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ, Ρ ΠΏΠΈΡΡ Π±ΡΠΊΠ΅Π½Π΄Ρ, Π½ΠΎ Π²ΠΎΡ Π½Π° Π΄Π½ΡΡ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π·Π°Π΄Π°ΡΠ° Π½Π°ΡΠ°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π½Π° React. ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ Π½Π°Π·Π°Π΄, ΠΊΠΎΠ³Π΄Π° Π²Π΅ΡΡΠΈΡ React Π±ΡΠ»Π° ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΎΠΉ, ΠΊΠ°ΠΊ ΠΈ ΠΌΠΎΠΉ ΠΎΠΏΡΡ ΡΡΠΎΠ½ΡΠ΅Π½Π΄-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Ρ ΡΠΆΠ΅ Π΄Π΅Π»Π°Π» ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ ΡΠ½Π°ΡΡΠ΄Ρ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ Π½Π΅ΡΠΌΠ΅Π»ΠΎ ΠΈ ΠΊΠΎΡΡΠ²ΠΎ. ΠΡΠΈΠ½ΠΈΠΌΠ°Ρ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π·ΡΠ΅Π»ΠΎΡΡΡ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ React ΠΈ ΠΌΠΎΠΉ ΠΏΠΎΠ΄ΡΠΎΡΡΠΈΠΉ ΠΎΠΏΡΡ, Ρ Π²ΠΎΠΎΠ΄ΡΡΠ΅Π²ΠΈΠ»ΡΡ ΡΠΆ Π² ΡΡΠΎΡ-ΡΠΎ ΡΠ°Π· ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΡ Ρ ΠΎΡΠΎΡΠΎ ΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Ρ ΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π·Π°Π³ΠΎΡΠΎΠ²ΠΊΠ° Π΄Π»Ρ Π±ΡΠ΄ΡΡΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π° ΡΡΠΎΠ±Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π·Π°Π±ΡΡΡ ΠΈ ΡΠΎΠ±ΡΠ°ΡΡ Π²ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, Π±ΡΠ»Π° Π½Π°ΠΏΠΈΡΠ°Π½Π° ΡΡΠ° ΡΡΠ°ΡΡΡ-ΡΠΏΠ°ΡΠ³Π°Π»ΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠΌΠΎΡΡ ΡΠ΅ΠΌ, ΠΊΡΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ, Ρ ΡΠ΅Π³ΠΎ Π½Π°ΡΠ°ΡΡ. ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΠΆΠ΅ Ρ ΠΌΠ΅Π½Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ.
TL/DR: ΠΠΎΠ΄ Π³ΠΎΡΠΎΠ²ΠΎΠΉ ΠΊ ΡΡΠ°ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° github
Π Π·Π°Π΄Π°ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠΉΡΠΈ Ρ Π΄Π²ΡΡ ΡΡΠΎΡΠΎΠ½:
ΠΠ΅ΡΠ²ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Ρ ΠΎΡΠΎΡ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠ°, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡΡ Π΄Π»Ρ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ², ΠΊΡΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ Ρ ΡΠ΅Π³ΠΎ Π½Π°ΡΠ°ΡΡ ΠΈ Π² ΡΡΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΎΡΠ»ΠΈΡΠΈΠ΅ Π±ΠΈΠ±ΠΈΠ»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΎΡ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ½Π°ΡΠ°Π»Π΅ Ρ ΠΏΠΎΡΡΠ» ΠΏΠ΅ΡΠ²ΡΠΌ ΠΏΡΡΡΠΌ, Π½ΠΎ Π·Π°ΡΠ΅ΠΌ ΡΠ΅ΡΠΈΠ» ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈ ΠΏΡΠΈΠΊΡΡΡΠΈΡΡ Π΅ΡΡ ΠΏΠ°ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΈ ΡΡΡ ΠΏΠΎΡΡΠΏΠ°Π»ΠΈΡΡ Π²ΡΡΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ Π½Π΅ΡΠΎΡΡΡΠΊΠΎΠ²ΠΊΠΈ. Π ΠΈΡΠΎΠ³Π΅ Π·Π°ΠΊΠ°ΡΠ°Π» ΡΡΠΊΠ°Π²Π° ΠΈ ΡΠ΄Π΅Π»Π°Π» Π²ΡΡ ΡΠ°ΠΌ. ΠΠΎ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΡΠ°ΠΊΠΈ ΡΠΏΠΎΠΌΡΠ½Ρ.
Create React Library
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅Π»ΠΈ Π΄Π΅Π»ΠΎ Ρ React ΡΠ»ΡΡΠ°Π»ΠΈ ΠΏΡΠΎ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΡΡΠ°ΡΡΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° React, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ²Π΅ΡΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΡ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°Π·ΡΠΌΠ½ΡΠ΅ Π΄Π΅ΡΠΎΠ»ΡΡ β Create React App (CRA). Π ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈ Π΄Π»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ (ΠΈ Π΅ΡΡΡ ΡΡΠ°ΡΡΡ Π½Π° Ρ Π°Π±ΡΠ΅). ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΡΡΠΊΡΡΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ui-kit Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ SPA. ΠΠ°ΠΌ Π½ΡΠΆΠ΅Π½ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠ°ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² (src), ΠΏΠ΅ΡΠΎΡΠ½ΠΈΡΠ° Π΄Π»Ρ ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ (example), ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ («Π²ΠΈΡΡΠΈΠ½Π°») ΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΡΠΌΠΈ ΠΊ ΡΠΊΡΠΏΠΎΡΡΡ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ (dist). Π’Π°ΠΊΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ Π² SPA ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π° Π±ΡΠ΄ΡΡ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΡΠΉ ΡΠ°ΠΉΠ». ΠΠΎΠ΄ΡΠΌΠ°Π² ΠΎΠ± ΡΡΠΎΠΌ, Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΠ»ΡΡ Π½Π° ΠΏΠΎΠΈΡΠΊΠΈ ΠΈ Π±ΡΡΡΡΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ» ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ CRA ΠΏΠ°ΠΊΠ΅Ρ β Creat React Library (CRL).
CRL, ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ CRA, ΡΠ²Π»ΡΠ΅ΡΡΡ «easy-to-use» CLI-ΡΡΠΈΠ»ΠΈΡΠΎΠΉ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΠ½ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ:
ΠΠ»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ(npx ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΏΠ°ΠΊΠ΅ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ):
Π Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ°Π±ΠΎΡΡ ΡΡΠΈΠ»ΠΈΡΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΊ ΡΠ°Π±ΠΎΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ².
ΠΠ° ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½ΠΈΠΉ Π΄Π΅Π½Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΡΠ΅ΡΠΈΠ» ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΈΡ Π²ΡΠ΅Ρ Π΄ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ npm-check:
ΠΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠ΅ΡΠ°Π»ΡΠ½ΡΠΌ ΡΠ°ΠΊΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅-ΠΏΠ΅ΡΠΎΡΠ½ΠΈΡΠ° Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ example Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Π½Π° js. ΠΡΠΈΠ΄ΡΡΡΡ ΡΡΠΊΠ°ΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ Π΅Π³ΠΎ Π½Π° TypeScript, Π΄ΠΎΠ±Π°Π²ΠΈΠ² tsconfig.json ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΌ typescript ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ @types ).
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ StanEgo, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΡΡΠΊΠ°Π·Π°Π» ΠΏΡΠΎ ΠΎΡΠ»ΠΈΡΠ½ΡΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ Create React Library β tsdx. ΠΡΠ° cli-ΡΡΠΈΠ»ΠΈΡΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΡ ΠΎΠΆΠ° Π½Π° CRA ΠΈ Π² ΠΎΠ΄Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠΎΠ·Π΄Π°Ρ ΠΎΡΠ½ΠΎΠ²Ρ Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Ρ Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΡΠΌ Rollup, TS, Prettier, husky, Jest ΠΈ React. ΠΡΠΈΡΠ΅ΠΌ React ΠΈΠ΄ΡΡ ΠΊΠ°ΠΊ ΠΎΠΏΡΠΈΡ. ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ:
Π Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π±ΡΠ΄ΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ²Π΅ΠΆΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΏΠ°ΠΊΡΠΎΠ² ΠΈ ΡΠ΄Π΅Π»Π°Π½Ρ Π²ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ. ΠΠΎΠ»ΡΡΠΈΠΌ ΠΏΠΎΡ ΠΎΠΆΠΈΠΉ Π½Π° CRL ΠΏΡΠΎΠ΅ΠΊΡ. ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ CRL β Zero-config. Π’. Π΅. ΠΊΠΎΠ½ΡΠΈΠ³ Rollup ΡΠΊΡΡΡ ΠΎΡ Π½Π°Ρ Π² tsdx (ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ CRA).
ΠΡΡΡΡΠΎ ΠΏΡΠΎΠ±Π΅ΠΆΠ°Π²ΡΠΈΡΡ ΠΏΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Ρ Π½Π΅ Π½Π°ΡΡΠ» ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ½ΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ eject ΠΊΠ°ΠΊ Π² CRA. ΠΠ°Π³Π»ΡΠ½ΡΠ² Π² issue ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ», ΡΡΠΎ ΠΏΠΎΠΊΠ° ΡΠ°ΠΊΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π΅Ρ. ΠΠ»Ρ ΠΊΠ°ΠΊΠΈΡ -Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΡΠΈΡΠΈΡΠ½ΠΎ, Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΈΠ΄ΡΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΠΊΠ°ΠΌΠΈ. ΠΡΠ»ΠΈ ΠΆΠ΅ Π²Π°ΠΌ ΡΡΠΎ Π½Π΅ Π½ΡΠΆΠ½ΠΎ, ΡΠΎ tsdx ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ±, ΡΡΠΎΠ±Ρ Π±ΡΡΡΡΠΎ Π½Π°ΡΠ°ΡΡ.
ΠΠ΅ΡΡΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΡΠ²ΠΎΠΈ ΡΡΠΊΠΈ
Π’Π΅ΠΏΠ΅ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΠΏΠ°ΠΊΠ΅ΡΡ react ΠΈ react-dom ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ types (Ρ.ΠΊ. ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΠΈΠ»ΠΈΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π½Π° TypeScript) ΠΊΠ°ΠΊ devDependencies (ΠΊΠ°ΠΊ ΠΈ Π²ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅):
Rollup
ΠΠ»Ρ ΡΠ±ΠΎΡΠΊΠΈ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Rollup, ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π» CRL. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³, Ρ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡΠΈΠ²Π°Π» ΡΠ°ΠΊΠΆΠ΅ Ρ CRL. ΠΠΎΠΎΠ±ΡΠ΅ ΡΠ»ΡΡΠ°Π» ΠΌΠ½Π΅Π½ΠΈΠ΅, ΡΡΠΎ Rollup Ρ ΠΎΡΠΎΡ Π΄Π»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π° Webpack Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ, Ρ Π½Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π» Webpack (ΠΌΠ½Π΅ Ρ Π²Π°ΡΠ°Π»ΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π·Π° ΠΌΠ΅Π½Ρ CRA), Π½ΠΎ Rollup Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Ρ ΠΎΡΠΎΡ, ΠΏΡΠΎΡΡ ΠΈ ΠΊΡΠ°ΡΠΈΠ².
Π package.json Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠΎΠ»Ρ Ρ ΡΠ°ΡΠΏΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ±ΡΠ°Π½Π½ΡΡ Π±Π°Π½Π΄Π»ΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠ°ΠΊ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅Ρ Π½Π°ΠΌ rollup β pkg.module:
ΠΠΎΠ½ΡΠΈΠ³ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ js-ΡΠ°ΠΉΠ», Π° ΡΠΎΡΠ½Π΅Π΅ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. Π ΠΏΠΎΠ»Π΅ input ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ», Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΎΠΏΠΈΡΠ°Π½Ρ ΡΠΊΡΠΏΠΎΡΡΡ Π΄Π»Ρ Π½Π°ΡΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. output β ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π½Π°ΡΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ β Π² ΠΌΠΎΠ΄ΡΠ»Ρ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ° ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΊΡΠ΄Π° Π΅Π³ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ.
ΠΠ΅ΡΠ²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈ ΡΠΊΡΠΏΠΎΡΡΠ½ΡΠΉ ΡΠ°ΠΉΠ»
Π’Π°ΠΊΠΆΠ΅ Π² src Π½Π°Π΄ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ» Ρ ΠΎΠ±ΡΠΈΠΌΠΈ Π΄Π»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ, Π³Π΄Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ ΡΠΈΠΏ Π΄Π»Ρ css ΠΈ svg (ΠΏΠΎΠ΄ΡΠΌΠΎΡΡΠ΅Π½ΠΎ Ρ CRL).
ΠΠ°Π»Π΅Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ Π΅Π³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°.
ΠΠ°Π±ΡΠ²Π°Π΅ΠΌ ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° Ρ Prettier
Π’Π΅ΡΠΏΠ΅ΡΡ Π½Π΅ ΠΌΠΎΠ³Ρ Π² code-review ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° Π½Π΅Π±ΡΠ΅ΠΆΠ½ΠΎΠ΅ ΠΈΠ»ΠΈ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π° ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΠΏΠΎΡΠΈΡΡ ΠΏΡΠΎ Π½Π΅Π³ΠΎ. ΠΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ Π½Π΅Π΄ΠΎΡΡΡΡ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Ρ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π»ΡΡΡΠ΅ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° ΡΠΎΠΌ, ΡΡΠΎ ΠΈ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ Π΄Π΅Π»Π°Π΅Ρ, Π° Π½Π΅ ΠΊΠ°ΠΊ ΠΎΠ½ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ. ΠΡΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ β ΠΏΠ΅ΡΠ²ΡΠΉ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ. ΠΡΡΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΏΠΎΠ΄ ΡΡΡ Π·Π°Π΄Π°ΡΡ β prettier. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ Π΅Π³ΠΎ:
ΠΠΎΠ±Π°Π²ΠΈΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ Π΄Π»Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΡΠΎΡΠ½Π΅Π½ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ» ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π΅ ΠΆΠ΄Π°ΡΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ°, Π° ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ prettier ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π» Π½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π½Π°ΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ. ΠΠ°, Π½Π°ΠΌ Π½ΡΠΆΠ΅Π½ Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ β onchange. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈ ΡΡΡ ΠΆΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ:
ΠΠ°ΡΠ΅ΠΌ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠΎΠ»Ρ scripts Π² package.json Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ:
ΠΠ° ΡΡΠΎΠΌ Π²ΡΠ΅ ΡΠΏΠΎΡΡ ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠ²Π°Π½ΠΈΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ Π·Π°ΠΊΡΡΡΡΠΌΠΈ.
ΠΠ·Π±Π΅Π³Π°Π΅ΠΌ ΠΎΡΠΈΠ±ΠΎΠΊ Ρ ESLint
ESLint ΡΠΆΠ΅ Π΄Π°Π²Π½ΠΎ ΡΡΠ°Π» ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ ΠΈ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΡΠ΅ΡΠΈΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΠΎ Π²ΡΠ΅Ρ js ΠΈ ts-ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ . ΠΠ°ΠΌ ΠΎΠ½ ΡΠΎΠΆΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ. Π ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ESLint Ρ Π΄ΠΎΠ²Π΅ΡΡΡ CRA, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΡΡΠΎ Π²ΠΎΠ·ΡΠΌΡΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΈΠ· CRA ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠΌ Π² Π½Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΠΈ Π΄Π»Ρ TS ΠΈ prettier (ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ ESLint ΠΈ prettier ):
ΠΠ°ΡΡΡΠΎΠΈΠΌ ESLint Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°.
Π’Π΅ΡΡΠΈΡΡΠ΅ΠΌ Ρ Jest
Π§ΡΠΎΠ±Ρ ΠΏΠΈΡΠ°ΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΠΈ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌ Jest β Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡ facebook. ΠΠ΄Π½Π°ΠΊΠΎ, Ρ.ΠΊ. ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌ TS Π½Π΅ ΡΠ΅ΡΠ΅Π· babel 7, Π° ΡΠ΅ΡΠ΅Π· tsc, ΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠ°ΠΊΠ΅Ρ ts-jest:
Π§ΡΠΎΠ±Ρ jest Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°Π» ΠΈΠΌΠΏΠΎΡΡΡ css ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΡ
ΡΠ°ΠΉΠ»ΠΎΠ², Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΌΠ΅Π½ΠΈΡΡ ΠΈΡ
ΠΌΠΎΠΊΠ°ΠΌΠΈ. Π‘ΠΎΠ·Π΄Π°ΡΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ __mocks__ ΠΈ ΡΠΎΠ·Π΄Π°ΡΠΌ ΡΠ°ΠΌ Π΄Π²Π° ΡΠ°ΠΉΠ»Π°.
styleMock.ts :
Π’Π΅ΠΏΠ΅ΡΡ ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ jest.
ΠΠ°ΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ ΡΠ΅ΡΡ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ExampleComponent Π² Π΅Π³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅.
Π Π°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ, Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΡΠ΅ΠΌ ΠΈ Π»ΡΠ±ΡΠ΅ΠΌΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ Ρ Storybook
ΠΠ°ΠΆΠ΄Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² Ρ ΠΎΡΠΎΡΠ΅ΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ Π΅Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·Π²Π°Π½ΠΈΡ. Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΡΠΎ ΠΏΡΠΎ Π½ΠΈΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ, Π½ΠΎ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π²ΡΠ³Π»ΡΠ΄ΡΡ, Π° Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠΎΠ³Π°ΡΡ ΠΈ ΠΏΠΎΠΈΠ·ΠΌΠ΅Π½ΡΡΡ. ΠΠ»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΠ°ΠΊΠΎΠΉ Ρ ΠΎΡΠ΅Π»ΠΊΠΈ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ. Π Π°Π½ΡΡΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Styleguidist. ΠΡΠΎΡ ΠΏΠ°ΠΊΠ΅Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΈΡΠ°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ markdown, Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΡΡΠ°Π²Π»ΡΡΡ Π² Π½Π΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌΡΡ React-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². ΠΠ°Π»Π΅Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΈ ΠΈΠ· Π½Π΅Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ°ΠΉΡ-Π²ΠΈΡΡΠΈΠ½Π°-ΠΊΠ°ΡΠ°Π»ΠΎΠ³, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΎ Π½ΡΠΌ, ΡΠ·Π½Π°ΡΡ ΠΎ Π΅Π³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ , Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΡΡΠΊΠ°ΡΡ Π² Π½Π΅Π³ΠΎ ΠΏΠ°Π»ΠΎΡΠΊΠΎΠΉ.
ΠΠ΄Π½Π°ΠΊΠΎ Π² ΡΡΠΎΡ ΡΠ°Π· Ρ ΡΠ΅ΡΠΈΠ» ΠΏΡΠΈΡΠΌΠΎΡΡΠ΅ΡΡΡΡ ΠΊ Π΅Π³ΠΎ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΡ β Storybook. ΠΠ° ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΠ½ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡΠ½ΡΠΌ Ρ Π΅Π³ΠΎ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ². ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠ½ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ, ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ ΠΈ ΡΠΊΠΎΡΠΎ ΡΠ°ΠΊΠΆΠ΅ Π½Π°ΡΠ½ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ ΡΡΡΠ°Π½ΠΈΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ markdown-ΡΠ°ΠΉΠ»ΠΎΠ². ΠΡΡ ΠΎΠ΄Π½ΠΎ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²ΠΎ Storybook ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΠΎΠ½ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠΎΡΠ½ΠΈΡΠ΅ΠΉ β ΡΡΠ΅Π΄ΠΎΠΉ Π΄Π»Ρ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π½Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ-ΠΏΡΠΈΠΌΠ΅ΡΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² (ΠΊΠ°ΠΊ ΡΡΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ CRL). Π storybook ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ stories β ts-ΡΠ°ΠΉΠ»Ρ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ Π½Π°ΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π²Ρ ΠΎΠ΄ΡΠΌΠΈ props Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ (Π»ΡΡΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° ΠΊΠΎΠ΄, ΡΡΠΎΠ±Ρ ΡΡΠ°Π»ΠΎ ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅). Π ΠΈΡΠΎΠ³Π΅ ΠΈΠ· ΡΡΠΈΡ stories ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅-Π²ΠΈΡΡΠΈΠ½Π°.
ΠΠ°ΠΏΡΡΡΠΈΠΌ ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ storybook:
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ΄ΡΡΠΆΠΈΠΌ Π΅Π³ΠΎ Ρ TS. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π΅ΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², Π° Π·Π°ΠΎΠ΄Π½ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΠΌ ΠΏΠ°ΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ Π°Π΄Π΄ΠΎΠ½ΠΎΠ²:
ΠΠ°ΠΏΠΈΡΠ΅ΠΌ Π½Π°ΡΡ ΠΏΠ΅ΡΠ²ΡΡ story Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ExampleComponent
ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π°Π΄Π΄ΠΎΠ½Ρ:
Π Π°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°ΡΡΡΡ Π² npm ΠΈ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΊΠ°ΠΊ Π½ΠΎΠ²ΡΠΉ npm-ΠΏΠ°ΠΊΠ΅Ρ. Π ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ Π΅Ρ ΠΏΡΡΠΌΠΎ ΠΈΠ· git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΊΠ°ΠΊ ΠΈΠ· master, ΡΠ°ΠΊ ΠΈ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ Π²Π΅ΡΠΎΠΊ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΌΠΎΠ΅ΠΉ Π·Π°Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ:
Π’Π°ΠΊΠΆΠ΅, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ TS, Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π°Π²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² IDE.
ΠΠΎΠ΄Π²ΠΎΠ΄ΠΈΠΌ ΠΈΡΠΎΠ³ΠΈ
Π ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ 2019 Π³ΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π±ΡΡΡΡΠΎ Π½Π°ΡΠ°ΡΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠ²ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π½Π° React ΠΈ TypeScript, ΠΏΠΎΠ»ΡΠ·ΡΡΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΡΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡΠΈΡΡ ΠΊΠ°ΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΠΈΠ»ΠΈΡΡ, ΡΠ°ΠΊ ΠΈ Π² ΡΡΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. ΠΡΠΎΡΠΎΠΉ ΠΏΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ, Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΈ Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ. ΠΠ»Π°Π²Π½ΠΎΠ΅ Π·Π½Π°ΡΡ ΠΊΡΠ΄Π° ΠΊΠΎΠΏΠ°ΡΡ, Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅, Ρ Π½Π°Π΄ΡΡΡ, ΡΡΠΎ ΡΡΠ°Π»ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠ΅.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π·ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΡΡΡΡ Π·Π°Π³ΠΎΡΠΎΠ²ΠΊΡ ΡΡΡ.
ΠΡΠΎΠΌΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅Π³ΠΎ, Ρ Π½Π΅ ΠΏΡΠ΅ΡΠ΅Π½Π΄ΡΡ Π½Π° ΠΈΡΡΠΈΠ½Ρ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΈ ΠΈ, Π²ΠΎΠΎΠ±ΡΠ΅, Π·Π°Π½ΠΈΠΌΠ°ΡΡΡ ΡΡΠΎΠ½ΡΠ΅Π½Π΄ΠΎΠΌ ΠΏΠΎΡΡΠΎΠ»ΡΠΊΡ-ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΈ ΠΎΠΏΡΠΈΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΡΡΠΈΡΡ ΡΡΠΏΠ΅Ρ Π° Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ²ΠΎΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². ΠΡΠ΄Ρ ΡΠ°Π΄, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΠ΅ΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΠ΅ΡΠ΅ΠΏΡΠ°ΠΌΠΈ. Happy coding!