ΠΠ΅ΡΡΠΈΡ TypeScript: 2.4.1
Π Π΅ΠΏΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡ
ΠΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠ΅ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ JS-ΡΠ°ΠΉΠ»Π° (ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΠ°ΡΡΠ΅Ρ) (245 ΠΠ±Π°ΠΉΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ commonjs) (Ρ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌ --allowJs
) ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π·Π°Π²ΠΈΡΠ°Π΅Ρ Π½Π°Π²ΡΠ΅Π³Π΄Π°. ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΏΡΠΎ- ΠΏΡΠΎΠ΅ΠΊΡ:
ΠΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅:
Π‘Π±ΠΎΡΠΊΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ Π±Π΅Π· Π½ΠΈΡ
.
Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅:
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π·Π°Π²ΠΈΡΠ°Π΅Ρ Π½Π°Π²ΡΠ΅Π³Π΄Π° ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ.
Π£ΡΠ»ΠΎΠ²ΠΈΡ ΠΈΡΠΏΡΡΠ°Π½ΠΈΠΉ
Π― ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎ, ΡΡΠΎ Π·Π΄Π΅ΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΈ ΠΏΠΎΠΏΡΡΠΊΠ° Π·Π°Ρ Π²Π°ΡΠΈΡΡ ΠΏΡΠΎΡΠΈΠ»Ρ Π¦Π Π½Π° Π»ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (Π΄Π°ΠΆΠ΅ 1 Ρ) ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΡΠ±ΠΎΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° Chrome ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΡΠΎΡΠΈΠ»Ρ Π¦Π.
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ ΡΠ°ΠΉΠ»Π° 245k - ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠΎ ΠΎΡΠΈΠ±ΠΊΠ° ΠΈΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ Π²ΡΡΠ°ΠΆΠ°ΡΡΡΡ Π² ΠΎΡΠ΅Π½Ρ Π³Π»ΡΠ±ΠΎΠΊΠΈΡ ΡΡΠ΅ΠΊΠ°Ρ . ΠΠΎΠΉ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΠ»Π°Π΄ΠΊΠΈ - Π½Π°ΡΠ°ΡΡ ΠΎΡΠ»Π°Π΄ΠΊΡ ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠ°ΡΠ·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·. Π― Π²Π΅ΡΠ½ΡΡΡ ΠΊ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ (ΠΈΠ»ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅ ΠΊΠ΅ΡΠ΅ΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ printf), Π΅ΡΠ»ΠΈ ΠΌΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ Π² Π»ΠΎΠΊΠ°ΡΠΈΡΡ Π½Π΅Ρ ΡΠ°Π±Π»ΠΎΠ½Π°.
Π£ ΡΠ»ΠΎΠ²Π° Β«ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Β» Π΅ΡΡΡ Π΄Π²Π° Π²Π°ΠΆΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: ΠΊΠ°ΠΊΠΎΠΉ ΡΠ·Π΅Π» Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ, ΠΈ Π³Π΄Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΎΡΠ»Π°Π΄ΠΊΠ° ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π°.
ΠΡΠΈΠ²Π΅Ρ, ΠΏΡΠΎΡΡΠΎ Ρ ΠΎΡΠ΅Π» ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ Π΄ΡΡΠ³ΠΎΠ΅, Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠ΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π° https://github.com/filipesilva/tsc-allowjs-big-file. ΠΠ½ Π±ΡΠ» Π²Π΄ΠΎΡ Π½ΠΎΠ²Π»Π΅Π½ ΡΠ΅ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ΅ΠΉ @dzonatan Π½Π° https://github.com/angular/angular-cli/issues/9636#issuecomment -390203543.
Π£ Π½Π΅Π³ΠΎ ΠΏΡΠΎΡΡΠΎ Π΅ΡΡΡ ΠΊΠ»Π°ΡΡ Ρ ΡΡΡΡΡΠ΅ΠΉ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²:
export class BigClass {
myVar: any;
method000() { return this.myVar; }
method001() { return this.myVar; }
// ...
method999() { return this.myVar; }
}
ΠΠ°ΠΏΡΡΠΊ npm test
Π² ΡΡΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ ΡΡΠΎΡ ΡΠ°ΠΉΠ» ΠΌΠ°ΡΠΈΠ½ΠΎΠΏΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° Π² javascript, Π° Π·Π°ΡΠ΅ΠΌ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» javascript Ρ ΠΏΠΎΠΌΠΎΡΡΡ --allowJs
.
ΠΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅ RangeError: Maximum call stack size exceeded
Ρ TS 2.7.2 ΠΈ 2.8.4. ΠΠ΄Π½Π°ΠΊΠΎ Π² TS 2.9.1 ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΡΠΈΠ²Π΅Ρ, ΠΏΡΠΎΡΡΠΎ Ρ ΠΎΡΠ΅Π» ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ Π΄ΡΡΠ³ΠΎΠ΅, Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠ΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π° https://github.com/filipesilva/tsc-allowjs-big-file. ΠΠ½ Π±ΡΠ» Π²Π΄ΠΎΡ Π½ΠΎΠ²Π»Π΅Π½ ΡΠ΅ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ΅ΠΉ @dzonatan Π½Π° https://github.com/angular/angular-cli/issues/9636#issuecomment -390203543.
Π£ Π½Π΅Π³ΠΎ ΠΏΡΠΎΡΡΠΎ Π΅ΡΡΡ ΠΊΠ»Π°ΡΡ Ρ ΡΡΡΡΡΠ΅ΠΉ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²:
ΠΠ°ΠΏΡΡΠΊ
npm test
Π² ΡΡΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ ΡΡΠΎΡ ΡΠ°ΠΉΠ» ΠΌΠ°ΡΠΈΠ½ΠΎΠΏΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° Π² javascript, Π° Π·Π°ΡΠ΅ΠΌ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» javascript Ρ ΠΏΠΎΠΌΠΎΡΡΡ--allowJs
.ΠΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅
RangeError: Maximum call stack size exceeded
Ρ TS 2.7.2 ΠΈ 2.8.4. ΠΠ΄Π½Π°ΠΊΠΎ Π² TS 2.9.1 ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ.