لقد وثقت السؤال أكثر على Stack Overflow (http://stackoverflow.com/questions/28150967/typescript-cloning-object)
هل هناك طريقة لاستنساخ كائن في الكتابة المطبوعة؟ أستخدم حاليًا الاختراق التالي
var cloneObj = new this.constructor () ؛
لكن الكتابة المطبوعة تثير الخطأ التالي: خطأ TS2351: لا يمكن استخدام "جديد" مع تعبير يفتقر نوعه إلى استدعاء أو توقيع بناء.
هل يمكنك توضيح المشكلة التي تواجهها بالضبط مع إجابتك الحالية؟
المشكلة هي أن المترجم يظهر خطأ عندما أحاول استدعاء مُنشئ ديناميكيًا.
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();
التعليق الأكثر فائدة
باستخدام الكود الخاص بك من SO ، تعمل أي من هذه القوالب مع أحدث البتات ويجب أن تحتوي على كل إصدار منذ: