ΠΠΎΠΌΠΏΠ°Π½ΠΈΠΈΡΠ΅ Microsoft, Igalia ΠΈ Bloomberg ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡ Π° ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²Π° Π·Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π·Π° ΡΠ²Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° JavaScript, ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° ΡΠΎΠ·ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² Π΅Π·ΠΈΠΊΠ° TypeScript. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΡΠΎΡΠΎΡΠΈΠΏΡΡ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π½ Π·Π° Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ° ECMAScript, Π΅ ΠΏΠΎΠ΄Π»ΠΎΠΆΠ΅Π½ Π½Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΈ ΠΎΠ±ΡΡΠΆΠ΄Π°Π½ΠΈΡ (Stage 0). ΠΠ° ΠΏΡΠ΅Π΄ΡΡΠΎΡΡΠΎΡΠΎ ΠΌΠ°ΡΡΠΎΠ²ΡΠΊΠΎ Π·Π°ΡΠ΅Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠΈΡΠ΅ΡΠ° TC39 ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ° ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ ΠΊΡΠΌ ΠΏΡΡΠ²Π° ΡΠ°Π·Π° Π½Π° ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Ρ Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° Π΅ΠΊΡΠΏΠ΅ΡΡΠ½ΠΎΡΠΎ ΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ ΠΎΡ ECMA.
ΠΠ°Π»ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΡΠ²Π½ΠΎ Π·Π°Π΄Π°Π΄Π΅Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠΈΠΏΠΎΠ²Π΅ ΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΡΠ΅ΡΠΊΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, ΡΠ΅ ΠΎΠΏΡΠΎΡΡΠΈ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΈ ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΊΠΎΠ΄Π° ΠΏΠΎ-ΡΠ΅ΡΠΈΠΌ ΠΈ Π»Π΅ΡΠ΅Π½ Π·Π° Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° ΠΎΡ ΡΡΡΠ°Π½ΠΈΡΠ½ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ. ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π΄Π° Π±ΡΠ΄Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΊΠ°ΡΠΎ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ β JavaScript Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»ΠΈΡΠ΅ ΠΈ ΡΡΠ΅Π΄ΠΈΡΠ΅ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅, ΡΠ΅ ΠΈΠ³Π½ΠΎΡΠΈΡΠ°Ρ Π°Π½ΠΎΡΠ°ΡΠΈΠΈΡΠ΅ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠΈΠΏΠΎΠ²Π΅ ΠΈ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ ΠΊΠΎΠ΄Π° ΠΊΠ°ΠΊΡΠΎ ΠΏΡΠ΅Π΄ΠΈ, Π²ΡΠ·ΠΏΡΠΈΠ΅ΠΌΠ°ΠΉΠΊΠΈ Π΄Π°Π½Π½ΠΈΡΠ΅ Π·Π° ΡΠΈΠΏΠΎΠ²Π΅ ΠΊΠ°ΡΠΎ ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈ. ΠΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Ρ Π³ΡΠ΅ΡΠΊΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅, Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° Π½Π°Π»ΠΈΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
Π’Π°Π·ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΅ ΡΠ°Π·Π»ΠΈΡΠ½Π° ΠΎΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° Π·Π° ΡΠΈΠΏΠΎΠ²Π΅, Π·Π°Π΄Π°Π΄Π΅Π½Π° ΡΡΠ΅Π· Π°Π½ΠΎΡΠ°ΡΠΈΠΈ JSDoc, ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈ. ΠΡΡΠΊΠ°ΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈΡΠ΅ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΊΠΎΠ΄Π° ΠΏΠΎ-Π³Π»Π΅Π΄Π΅Π½, ΡΡΠ΅Π½ ΠΈ ΠΏΡΠΎΡΡ Π·Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°Π½Π΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½ΠΈΡΠ΅ ΡΡΠ΅Π΄ΠΈ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° TypeScript ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π΄Π° ΠΏΠΎΠ΄ΡΠ΅ΡΡΠ°Π²Π°Ρ Π³ΡΠ΅ΡΠΊΠΈ Π² ΡΠΈΠΏΠΈΠ·ΠΈΡΠ°Π½ΠΈΡ JavaScript ΠΊΠΎΠ΄ Π±Π΅Π· Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π²Π³ΡΠ°Π΄Π΅Π½Π°ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° ΡΠΈΠΏΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π΄ΠΈΠ°Π»Π΅ΠΊΡΠΈ Π½Π° JavaScript, ΠΊΠ°ΡΠΎ TypeScript ΠΈ Flow, Π±Π΅Π· Π΄Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° ΡΡΠ°Π½ΡΡΠ΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ ΠΎΡ Π΅Π΄ΠΈΠ½ Π΅Π·ΠΈΠΊ Π½Π° Π΄ΡΡΠ³.

ΠΠ· ΡΠΈΠΏΠΎΠ² ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Β«stringΒ», Β«numberΒ» ΠΈ Β«booleanΒ», ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΏΠΎΠ»Π΅ΠΉ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² (Β«number[]Β»). ΠΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ½Π½ΡΡ
ΡΠΈΠΏΠΎΠ² (Β«string | numberΒ») ΠΈ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΎΠ². let x: string; function add(a: number, b: number) { return a + b; } interface Person { name: string; age: number; } function foo<T>(x: T) { return x; } function foo(x: string | number): string | number { if (typeof x === number) { return x + 1 } else { return x + Β«!Β» } }
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
