ΠΠ°ΡΠΊΡΠΎΡΠΎΡΡ, ΠΠ³Π°Π»ΠΈΡΠ° ΠΈ ΠΠ»ΡΠΌΠ±Π΅ΡΠ³ ΠΏΡΠ΅Π·Π΅Π΄ΠΎΠ° ΠΈΠ½ΠΈΡΠΈΡΠ°ΡΠΈΠ²Π° Π΄Π° ΡΠ° Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠ°ΡΠ° Π²ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° JavaScript Π·Π° Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈ Π·Π° ΡΠΈΠΏΠΎΠ²ΠΈ, ΡΠ»ΠΈΡΠ½Π° Π½Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠ°ΡΠ° ΡΡΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΠΎ ΡΠ°Π·ΠΈΠΊΠΎΡ TypeScript. ΠΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ², ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ Π·Π° Π²ΠΊΠ»ΡΡΡΠ²Π°ΡΠ΅ Π²ΠΎ ΡΡΠ°Π½Π΄Π°ΡΠ΄ΠΎΡ ECMAScript ΡΠ΅ Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈ Π·Π° ΠΏΡΠ΅Π»ΠΈΠΌΠΈΠ½Π°ΡΠ½ΠΈ Π΄ΠΈΡΠΊΡΡΠΈΠΈ (Π€Π°Π·Π° 0). ΠΠ° ΡΠ»Π΅Π΄Π½ΠΈΠΎΡ ΡΠΎΡΡΠ°Π½ΠΎΠΊ Π½Π° ΠΠΎΠΌΠΈΡΠ΅ΡΠΎΡ Π·Π° Π’Π39 Π²ΠΎ ΠΌΠ°ΡΡ, ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ Π²ΠΎ ΠΏΡΠ²Π°ΡΠ° ΡΠ°Π·Π° Π½Π° ΡΠ°Π·Π³Π»Π΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΡΠ΅Π΄Π»ΠΎΠ³ΠΎΡ ΡΠΎ Π²ΠΊΠ»ΡΡΡΠ²Π°ΡΠ΅ Π½Π° Π΅ΠΊΡΠΏΠ΅ΡΡΡΠΊΠ°ΡΠ° Π·Π°Π΅Π΄Π½ΠΈΡΠ° ΠΎΠ΄ ΠΠ¦ΠΠ.
ΠΠΌΠ°ΡΠ΅ΡΠΎ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΠ°Π½ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° ΡΠΈΠΏΠΎΡ ΡΠ΅ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΡΠ΅ ΠΌΠ½ΠΎΠ³Ρ Π³ΡΠ΅ΡΠΊΠΈ Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π½Π° ΡΠ°Π·Π²ΠΎΡ, Π΄Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠ°, Π΄Π° Π³ΠΎ ΠΏΠΎΠ΅Π΄Π½ΠΎΡΡΠ°Π²ΠΈΡΠ΅ Π΄Π΅Π±Π°Π³ΠΈΡΠ°ΡΠ΅ΡΠΎ ΠΈ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΊΠΎΠ΄ΠΎΡ ΠΏΠΎΡΠΈΡΠ»ΠΈΠ² ΠΈ ΠΏΠΎΠ»Π΅ΡΠ΅Π½ Π·Π° ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ° ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° ΠΎΠ΄ ΡΡΠ΅ΡΠΈ Π»ΠΈΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ. ΠΠΎΠ΄Π΄ΡΡΠΊΠ°ΡΠ° Π·Π° ΡΠΈΠΏΠΎΠ²ΠΈ ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π΄Π° ΡΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° ΠΊΠ°ΠΊΠΎ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»Π½Π° ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° - JavaScript ΠΌΠΎΡΠΎΡΠΈΡΠ΅ ΠΈ ΡΠ°Π±ΠΎΡΠ½ΠΈΡΠ΅ Π²ΡΠ΅ΠΌΠΈΡΠ° ΡΡΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π°Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΡ ΡΠ΅ Π³ΠΈ ΠΈΠ³Π½ΠΎΡΠΈΡΠ°Π°Ρ ΠΏΡΠΈΠ±Π΅Π»Π΅ΡΠΊΠΈΡΠ΅ ΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° ΡΠΈΠΏΠΎΡ ΠΈ ΡΠ΅ Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠ²Π°Π°Ρ ΠΊΠΎΠ΄ΠΎΡ ΠΊΠ°ΠΊΠΎ ΠΏΠΎΡΠ°Π½ΠΎ, ΡΡΠ΅ΡΠΈΡΠ°ΡΡΠΈ Π³ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ Π·Π° ΡΠΈΠΏΠΎΡ ΠΊΠ°ΠΊΠΎ ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈ. ΠΠΎ, Π°Π»Π°ΡΠΊΠΈΡΠ΅ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΡ ΡΠ΅ ΠΌΠΎΠΆΠ°Ρ Π΄Π° Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° Π΄Π° Π³ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π°Π°Ρ Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π°Π½ΠΈ ΡΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π° ΡΠΈΠΏΠΎΠ²ΠΈ.
ΠΠ³ΠΎΡΠ° Π½Π° ΡΠΎΠ°, Π·Π° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΠ΄ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈΡΠ΅ Π·Π° ΡΠΈΠΏΠΎΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΠ°Π½ΠΈ ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° ΠΏΡΠΈΠ±Π΅Π»Π΅ΡΠΊΠΈΡΠ΅ Π½Π° JSDoc Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ Π²ΠΎ ΡΠΎΡΠΌΠ° Π½Π° ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈ, Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎΡΠΎ ΡΠΊΠ°ΠΆΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΈΠΏΠΎΠ²ΠΈΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π²ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈΡΠ΅ Π·Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΠ° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΡΠ΅ Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΊΠΎΠ΄ΠΎΡ ΠΏΠΎΠ²ΠΈΠ·ΡΠ΅Π»Π΅Π½, ΡΠ°Π·Π±ΠΈΡΠ»ΠΈΠ² ΠΈ ΠΏΠΎΠ»Π΅ΡΠ΅Π½ Π·Π° ΡΡΠ΅Π΄ΡΠ²Π°ΡΠ΅. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, IDE-ΠΈ ΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° TypeScript ΡΠ΅ ΠΌΠΎΠΆΠ°Ρ Π²Π΅Π΄Π½Π°Ρ Π΄Π° Π³ΠΈ ΠΈΡΡΠ°ΠΊΠ½Π°Ρ Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ Π²ΠΎ Π²Π½Π΅ΡΠ΅Π½ΠΈΠΎΡ JavaScript ΠΊΠΎΠ΄ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΊΠΎΠ½Π²Π΅ΡΠ·ΠΈΠΈ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ, Π²Π³ΡΠ°Π΄Π΅Π½Π°ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΡΠΈΠΏ ΡΠ΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° Π΄ΠΈΡΠ°Π»Π΅ΠΊΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ JavaScript, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ TypeScript ΠΈ Flow, Π±Π΅Π· ΡΡΠ°Π½ΡΠΏΠΈΠ»Π°ΡΠΈΡΠ° ΠΎΠ΄ Π΅Π΄Π΅Π½ ΡΠ°Π·ΠΈΠΊ Π½Π° Π΄ΡΡΠ³.

ΠΠ΅ΡΡ ΡΠΈΠΏΠΎΠ²ΠΈΡΠ΅, ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π΄Π° ΡΠ΅ Π΄ΠΎΠ΄Π°Π΄Π°Ρ βΡΡΡΠΈΠ½Π³β, βΠ±ΡΠΎΡβ ΠΈ βΠ±ΡΠ»β, ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΏΡΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ, Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΡ, ΠΏΠΎΠ»ΠΈΡΠ° Π·Π° ΠΊΠ»Π°ΡΠΈ, ΡΠΈΠΏΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π½ΠΈΠ·ΠΈ (βΠ±ΡΠΎΡ[]β). ΠΡΡΠΎ ΡΠ°ΠΊΠ°, ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π΄Π° ΡΠ΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΡΠΏΠΎΠ΅Π½ΠΈ ΡΠΈΠΏΠΎΠ²ΠΈ (βΠ½ΠΈΠ·Π° | Π±ΡΠΎΡβ) ΠΈ Π³Π΅Π½Π΅ΡΠΈΠΊΠΈ. Π½Π΅ΠΊΠ° x: Π½ΠΈΠ·Π°; ΡΡΠ½ΠΊΡΠΈΡΠ° add(a: Π±ΡΠΎΡ, b: Π±ΡΠΎΡ) { Π²ΡΠ°ΡΠΈ a + b; } ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ ΠΠΈΡΠ΅ { ΠΈΠΌΠ΅: Π½ΠΈΠ·Π°; Π²ΠΎΠ·ΡΠ°ΡΡ: Π±ΡΠΎΡ; } ΡΡΠ½ΠΊΡΠΈΡΠ° foo (x: T) { Π²ΡΠ°ΡΠΈ x; } ΡΡΠ½ΠΊΡΠΈΡΠ° foo(x: ΡΡΡΠΈΠ½Π³ | Π±ΡΠΎΡ): Π½ΠΈΠ·Π° | Π±ΡΠΎΡ { if (ΡΠΈΠΏ x === Π±ΡΠΎΡ) { Π²ΡΠ°ΡΠΈ x + 1 } else { Π²ΡΠ°ΡΠΈ x + "!" } }
ΠΠ·Π²ΠΎΡ: opennet.ru
