निर्माता समारोह संदर्भित

वोट
14

इम सोच कैसे मैं एक मूल्य के रूप में कार्य पारित करने के लिए एक प्रकार निर्माता के लिए एक संदर्भ प्राप्त कर सकते हैं। मूल रूप से, मैं एक सामान्य प्रकार रजिस्ट्री कि उदाहरणों एक सामान्य प्रकार रजिस्ट्री उदाहरण के एक सदस्य फ़ंक्शन को कॉल करके बनाया जा करने की अनुमति होगी करना चाहते हैं।

उदाहरण के लिए:

class GeometryTypeInfo
{        
    constructor (public typeId: number, public typeName: string, public fnCtor: (...args: any[]) => IGeometry) {
    }
    createInstance(...args: any[]) : IGeometry { return this.fnCtor(args); }
    }
}

बाद में:

class Point implements IGeometry {
    constructor(public x: number, public y: number) { }

    public static type_info = new GeometryTypeInfo(1, 'POINT', Point); // <- fails
    // also fails: 
    //    new GeometryTypeInfo(1, 'POINT', new Point);
    //    new GeometryTypeInfo(1, 'POINT', Point.prototype);
    //    new GeometryTypeInfo(1, 'POINT', Point.bind(this));
}

क्या किसी को पता है अगर यह एक कक्षाएं निर्माता समारोह संदर्भ के लिए संभव है?

08/10/2012 को 19:17
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


2 जवाब

वोट
18

आप एक निर्माता के प्रकार का वर्णन करने के लिए एक निर्माण हस्ताक्षर के साथ निर्माता प्रकार शाब्दिक या किसी वस्तु प्रकार शाब्दिक उपयोग कर सकते हैं (देखें, आम तौर पर, भाषा कल्पना की धारा 3.5)। अपने उदाहरण का उपयोग करने के लिए, निम्नलिखित काम करना चाहिए:

interface IGeometry {
    x: number;
    y: number;
}

class GeometryTypeInfo
{        
    constructor (public typeId: number, public typeName: string, public fnCtor: new (...args: any[]) => IGeometry) {
    }
    createInstance(...args: any[]) : IGeometry { return new this.fnCtor(args); }
}

class Point implements IGeometry {
    constructor(public x: number, public y: number) { }

    public static type_info = new GeometryTypeInfo(1, 'POINT', Point);
}

सूचना GenometryTypeInfo के निर्माता पैरामीटर सूची में शाब्दिक निर्माता प्रकार, और CreateInstance के कार्यान्वयन में नया कॉल।

08/10/2012 को 19:27
का स्रोत उपयोगकर्ता

वोट
6

typeof YourClassआप निर्माता देता प्रकार किस प्रकार एनोटेशन में इस्तेमाल किया जा सकता है।

YourClassऔर this.constructorखुद निर्माता है। तो, यह कोड संकलित:

class A {}

const B : typeof A = A;

this.constructor जैसे आप इसे कास्टिंग कुछ धोखाधड़ी उपयोग करने की आवश्यकता है कि स्थितियों में, टाइपप्रति (जो हास्यास्पद है) द्वारा निर्माता प्रकार के मूल्य के रूप में मान्यता प्राप्त नहीं है इसलिए कोई any

new (<any> this.constructor)()

बस।

30/06/2016 को 19:40
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more