2016-11-02 14 views
7

私はまだTypescriptが新しく、インターフェイスの周りを頭で囲むのに問題があります。私が理解しているように、インタフェースはクラスの型記述またはコントラクトです。それは私が定義することができます、どのクラスが持つことができ、どのタイプのプロパティです。ここでは、ここでインターフェースTypescript/Angular 2:プロパティが型にありません

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

export class ResultPage implements ResultPageInterface {} 

そして、私はそれを使用したいクラスのコードです

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

:私はそれを実装しようとするが、常にこのエラーを取得します。

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あなたはResultPageResultPageInterfaceを実装していますが、それは実際にない状態。

それはあなたが、それは確かにインターフェイスを実装するようにだけでなく、クラスのメンバを配置する必要があり

export class ResultPage implements ResultPageInterface { 
    entries:Array<any>; 
    page_number:number; 
    page_size:number; 
    total_entries:number; 
} 
関連する問題