Typescript: كائن الاستنساخ

تم إنشاؤها على ٥ فبراير ٢٠١٥  ·  3تعليقات  ·  مصدر: microsoft/TypeScript

لقد وثقت السؤال أكثر على Stack Overflow (http://stackoverflow.com/questions/28150967/typescript-cloning-object)

هل هناك طريقة لاستنساخ كائن في الكتابة المطبوعة؟ أستخدم حاليًا الاختراق التالي

var cloneObj = new this.constructor () ؛

لكن الكتابة المطبوعة تثير الخطأ التالي: خطأ TS2351: لا يمكن استخدام "جديد" مع تعبير يفتقر نوعه إلى استدعاء أو توقيع بناء.

Question

التعليق الأكثر فائدة

باستخدام الكود الخاص بك من 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 التقييمات