2016-07-19 45 views
1

對象的創建,以創建一個類的對象正在發生的事情而不會出現錯誤:打字稿無法使用新的運營商

enter image description here

+1

你需要分享Common.Models.PaginationModel'的'代碼,但它似乎是,如果第一部作品,它不是一個類,但一個接口,如果是這樣的話,那麼你不能使用'new'關鍵字 –

+0

和Common.Models。你有定義嗎? – LDJ

回答

0

有一個snippet at TS playground

我會說,我們可以考慮一下這款接口及其實現

namespace Common.Models 
{ 
    export interface IPaginationModel { 
     PageNumber: number; 
     PageSize: number; 
     SearchText: string; 
     Ascending: boolean; 
    } 
    export class PaginationModel implements IPaginationModel { 
     constructor(
      public PageNumber: number, 
      public PageSize: number, 
      public SearchText: string, 
      public Ascending: boolean 
     ){} 
    } 
} 

,然後我們可以因此使用這樣的

// we use an Interface to assure that the type is as it should be 
// we create object which fits to IPaginationModel structure 
let paginationParams: Common.Models.IPaginationModel = { 
    PageNumber: this.pageNumber, 
    PageSize: this.pageSize, 
    SearchText: this.denominationFilter, 
    Ascending: true 
}; 

// here we use a class 
// to call its constructor 
let pagParams = new Common.Models.PaginationModel(
    this.pageNumber, 
    this.pageSize, 
    this.denominationFilter, 
    true); 

// and we can even use class as interface (as the first example) 
let paginationParamsAsClassAPI: Common.Models.PaginationModel = { 
    PageNumber: this.pageNumber, 
    PageSize: this.pageSize, 
    SearchText: this.denominationFilter, 
    Ascending: true 
}; 

,我們可以使用接口和類作爲的類型時,同時建立純JS對象(第一和第三實施例)或我們可以使用類構造函數建立這樣的例子。

檢查here