Microsoft, Igalia ΠΈ Bloomberg ΠΏΠΎΠ΅Ρ Π° ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²Π°ΡΠ° Π΄Π° Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° JavaScript Π·Π° ΠΈΠ·ΡΠΈΡΠ½ΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² Π΅Π·ΠΈΠΊΠ° TypeScript. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ°, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ Π·Π° Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ° ECMAScript, ΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ΠΈ Π·Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΈ ΠΎΠ±ΡΡΠΆΠ΄Π°Π½ΠΈΡ (ΠΡΠ°ΠΏ 0). ΠΠ° ΡΠ»Π΅Π΄Π²Π°ΡΠΎΡΠΎ Π·Π°ΡΠ΅Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠΈΡΠΈΡΡΠ° TC39 ΠΏΡΠ΅Π· ΠΌΠ°ΡΡ ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ° Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ ΠΊΡΠΌ ΠΏΡΡΠ²ΠΈΡ Π΅ΡΠ°ΠΏ Π½Π° ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Ρ ΡΡΠ°ΡΡΠΈΠ΅ΡΠΎ Π½Π° Π΅ΠΊΡΠΏΠ΅ΡΡΠ½Π°ΡΠ° ΠΎΠ±ΡΠ½ΠΎΡΡ ΠΎΡ ECMA.
ΠΠ°Π»ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΠΈΠ·ΡΠΈΡΠ½ΠΎ ΠΏΠΎΡΠΎΡΠ΅Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠΈΠΏΠ° ΡΠ΅ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΡΠ΅ΡΠΊΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, ΡΠ΅ ΠΎΠΏΡΠΎΡΡΠΈ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΈ ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΊΠΎΠ΄Π° ΠΏΠΎ-ΡΠ΅ΡΠ»ΠΈΠ² ΠΈ ΠΏΠΎ-Π»Π΅ΡΠ΅Π½ Π·Π° ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π½Π° ΡΡΠ΅ΡΠΈ ΡΡΡΠ°Π½ΠΈ. ΠΡΠ΅Π΄Π»Π°Π³Π° ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ Π΄Π° Π±ΡΠ΄Π΅ Π²Π½Π΅Π΄ΡΠ΅Π½Π° ΠΊΠ°ΡΠΎ Π½Π΅Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½Π° ΡΡΠ½ΠΊΡΠΈΡ - Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»ΠΈΡΠ΅ Π½Π° JavaScript ΠΈ ΡΡΠ΅Π΄ΠΈΡΠ΅ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅, ΡΠ΅ ΠΈΠ³Π½ΠΎΡΠΈΡΠ°Ρ Π°Π½ΠΎΡΠ°ΡΠΈΠΈΡΠ΅ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠΈΠΏΠ° ΠΈ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ ΠΊΠΎΠ΄Π° ΠΊΠ°ΠΊΡΠΎ ΠΏΡΠ΅Π΄ΠΈ, ΡΡΠ΅ΡΠΈΡΠ°ΠΉΠΊΠΈ Π΄Π°Π½Π½ΠΈΡΠ΅ Π·Π° ΡΠΈΠΏΠ° ΠΊΠ°ΡΠΎ ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈ. ΠΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π½Π°Π»ΠΈΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π·Π° Π΄Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Ρ Π³ΡΠ΅ΡΠΊΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅.
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π·Π° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° Π·Π° ΡΠΈΠΏΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π°Π½ΠΎΡΠ°ΡΠΈΠΈ Π½Π° JSDoc, ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈ, Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎΡΠΎ ΠΏΠΎΡΠΎΡΠ²Π°Π½Π΅ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π·Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΊΠΎΠ΄Π° ΠΏΠΎ-Π²ΠΈΠ·ΡΠ°Π»Π΅Π½, ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌ ΠΈ ΠΏΠΎ-Π»Π΅ΡΠ΅Π½ Π·Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°Π½Π΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ IDE Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° TypeScript ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π΄Π° ΠΌΠ°ΡΠΊΠΈΡΠ°Ρ Π³ΡΠ΅ΡΠΊΠΈ Π²ΡΠ² Π²ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ JavaScript ΠΊΠΎΠ΄ Π±Π΅Π· Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½ΠΈΡ. Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, Π²Π³ΡΠ°Π΄Π΅Π½Π°ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° Π²ΡΠ²Π΅Π΄Π΅Π½ΠΈ Π΄ΠΈΠ°Π»Π΅ΠΊΡΠΈ Π½Π° JavaScript, ΠΊΠ°ΡΠΎ TypeScript ΠΈ Flow, Π±Π΅Π· ΡΡΠ°Π½ΡΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ ΠΎΡ Π΅Π΄ΠΈΠ½ Π΅Π·ΠΈΠΊ Π½Π° Π΄ΡΡΠ³.
Π‘ΡΠ΅Π΄ ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π΄Π° ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΡΡ βΠ½ΠΈΠ·β, βΡΠΈΡΠ»ΠΎβ ΠΈ βΠ±ΡΠ»Π΅Π²β, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΡΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ, ΠΎΠ±Π΅ΠΊΡΠ½ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ, ΠΏΠΎΠ»Π΅ΡΠ° Π½Π° ΠΊΠ»Π°ΡΠΎΠ²Π΅, Π²ΡΠ²Π΅Π΄Π΅Π½ΠΈ ΠΌΠ°ΡΠΈΠ²ΠΈ (βΡΠΈΡΠ»ΠΎ[]β). ΠΡΠ΅Π΄Π»Π°Π³Π° ΡΠ΅ ΡΡΡΠΎ Π΄Π° ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ (βΠ½ΠΈΠ· | Π½ΠΎΠΌΠ΅Ρβ) ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ½ΠΈ. Π½Π΅ΠΊΠ° x: Π½ΠΈΠ·; ΡΡΠ½ΠΊΡΠΈΡ add(a: ΡΠΈΡΠ»ΠΎ, b: ΡΠΈΡΠ»ΠΎ) { return a + b; } ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΠΈΡΠ΅ { ΠΈΠΌΠ΅: Π½ΠΈΠ·; Π²ΡΠ·ΡΠ°ΡΡ:Π½ΠΎΠΌΠ΅Ρ; } ΡΡΠ½ΠΊΡΠΈΡ foo (x: T) { return x; } ΡΡΠ½ΠΊΡΠΈΡ foo(x: Π½ΠΈΠ· | ΡΠΈΡΠ»ΠΎ): Π½ΠΈΠ· | ΡΠΈΡΠ»ΠΎ { if (typeof x === ΡΠΈΡΠ»ΠΎ) { return x + 1 } else { return x + "!" }}
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru