Typescript: ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 5 Ρ„Π΅Π²Ρ€. 2015  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: microsoft/TypeScript

Π― Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π» этот вопрос большС Π² Stack Overflow (http://stackoverflow.com/questions/28150967/typescript-cloning-object)

Π•ΡΡ‚ΡŒ Π»ΠΈ способ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² машинописном тСкстС? Π’ настоящСС врСмя я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ…Π°ΠΊ

var cloneObj = Π½ΠΎΠ²Ρ‹ΠΉ this.constructor ();

Π½ΠΎ ΠΌΠ°ΡˆΠΈΠ½ΠΎΠΏΠΈΡΠ½Ρ‹ΠΉ тСкст Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ: ошибка TS2351: Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Β«Π½ΠΎΠ²Ρ‹ΠΉΒ» с Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Ρ‚ΠΈΠΏ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ сигнатуры Π²Ρ‹Π·ΠΎΠ²Π° ΠΈΠ»ΠΈ конструкции.

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ваш ΠΊΠΎΠ΄ ΠΈΠ· SO, Π»ΡŽΠ±Ρ‹Π΅ ΠΈΠ· этих ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с послСдними Π±ΠΈΡ‚Π°ΠΌΠΈ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ вСрсии, начиная с:

    var cloneObj = new (<any>this.constructor());
    var cloneObj = new (<any>this.constructor)();
    var cloneObj = new (<any>this).constructor();

ВсС 3 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ, Π² Ρ‡Π΅ΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ с вашим Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠΌ?

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ компилятор Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΊΠΎΠ³Π΄Π° я ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ конструктор динамичСски.

var cloneObj = new this.constructor(); // error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.

Π― нашСл способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ компилятор 1.3 счастливым:

var cloneObj = new (<any> this.constructor());

Но этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с 1.4.1.

Π•ΡΡ‚ΡŒ Π»ΠΈ способ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ конструктор динамичСски?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ваш ΠΊΠΎΠ΄ ΠΈΠ· SO, Π»ΡŽΠ±Ρ‹Π΅ ΠΈΠ· этих ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с послСдними Π±ΠΈΡ‚Π°ΠΌΠΈ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ вСрсии, начиная с:

    var cloneObj = new (<any>this.constructor());
    var cloneObj = new (<any>this.constructor)();
    var cloneObj = new (<any>this).constructor();
Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ