2016-11-02 28 views
7

türünde eksiktir. Yine de Typescript konusunda oldukça yeniyim ve başımı arayüzler arasında kaydırma konusunda sorun yaşıyorum. Anladığım kadarıyla bir arabirim bir sınıf için bir tür açıklama veya sözleşme. Bir sınıfın hangi özelliklere sahip olabileceğini ve hangi tipte olabileceğini tanımlamamı sağlar. İşte burada arayüzüneTypescript/Angular 2: Özellik

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

export class ResultPage implements ResultPageInterface {} 

Ve bunu kullanmak istiyorum sınıf kodudur

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

: Bunu uygulamaya çalışıyorum, ama her zaman bu hatayı alabilirsiniz.

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; 
    } 

} 

cevap

3

olmalıdır elde edilenler:

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

Şey, aptal ... Bu mantıklı. –

3

implements ResultPageInterface Eğer ResultPageResultPageInterface uygular belirtmektedirler ama aslında değil.

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

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

Ayrıca üyeler, özel ve kullanımı olabilir:

O gerçekten arabirimini uygulayacak böylece de sınıfta üyelerini koymak gerekir

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