ΠΠΎΠΌΠΏΠ°Π½ΠΈΠΈΡΠ΅ 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
