2016-11-02 27 views
7

में गायब है, मैं अभी भी टाइपस्क्रिप्ट के लिए काफी नया हूं और इंटरफेस के चारों ओर अपने सिर को लपेटने में परेशानी है। जैसा कि मैं एक इंटरफेस समझता हूं एक वर्ग के लिए एक प्रकार का वर्णन या अनुबंध है। यह मुझे परिभाषित करने की अनुमति देता है, किस वर्ग में एक वर्ग हो सकता है और किस प्रकार के वे हैं। मुझे लगता है कि लागू करने के लिए प्रयास करते हैं, लेकिन हमेशा यह त्रुटि प्राप्त:टाइपस्क्रिप्ट/कोणीय 2: संपत्ति

error TS2420: Class 'ResultPage' incorrectly implements interface 'ResultPageInterface'. 
Property 'entries' is missing in type 'ResultPage'. 

यहां इंटरफ़ेस

export interface ResultPageInterface { 
    entries:Array<any>; 
    page_number:number; 
    page_size:number; 
    total_entries:number; 
} 

export class ResultPage implements ResultPageInterface {} 

और यहाँ वर्ग जहां मैं इसे उपयोग करना चाहते हैं के लिए कोड है।

import { Injectable } from '@angular/core'; 
import { ResultPage } from '../interfaces/result-page.interface'; 

@Injectable() 
export class SomeClass { 

    constructor() {} 

    buildPage(res:any): ResultPage { 
    let page:ResultPage = new ResultPage(); 
    page.entries = res.data; 
    page.page_number = res.pagination.page_number; 
    page.page_size = res.pagination.page_size; 
    page.total_entries = res.pagination.total_entries; 
    return page; 
    } 

} 

उत्तर

3

आप इतना है कि यह वास्तव में इंटरफ़ेस को लागू करने के साथ कक्षा में सदस्यों रखना होगा:

class ResultPage implements ResultPageInterface { 
    public entries: Array<any>; 
    public page_number: number; 
    public page_size: number; 
    public total_entries: number; 

    constructor() { 
     this.entries = []; 
    } 
} 

तुम भी सदस्य निजी और उपयोग कर सकते हैं गेटर्स:

class ResultPage implements ResultPageInterface { 
    private _entries: Array<any>; 
    private _page_number: number; 
    private _page_size: number; 
    private _total_entries: number; 

    constructor() { 
     this._entries = []; 
    } 

    public get entries() { 
     return this._entries; 
    } 

    public get page_number() { 
     return this._page_number; 
    } 

    public get page_size() { 
     return this._page_size; 
    } 

    public get total_entries() { 
     return this._total_entries; 
    } 
} 
+0

अच्छा, बेवकूफ मुझे ... यह समझ में आता है। –

3

implements ResultPageInterface आप राज्य है कि ResultPage लागू करता ResultPageInterface लेकिन यह वास्तव में नहीं है।

यह होना चाहिए

export class ResultPage implements ResultPageInterface { 
    entries:Array<any>; 
    page_number:number; 
    page_size:number; 
    total_entries:number; 
} 
संबंधित मुद्दे