2017-05-08 60 views
0

我試圖寫了一個接口類,其中還包含其他類,但是當我這樣做,但不知道什麼是錯的我收到一個錯誤接口類:與嵌套類的打字稿

接口:

export interface Languages{ 
    static English = class{ 
     id: number, 
     section:number, 
     name: string 
    }, 
    static Chinese = class{ 
     id: number, 
     section: number, 
     name: string 
    } 
} 

兩個staticEnglish都出現錯誤,指出:[ts] Property or signature expected. [ts] Cannot find name 'English'.

+2

接口中沒有'static'。一個接口描述實例的外觀。如果你想描述靜態成員/方法,你需要創建一個不同的接口來表示它,就像你使用[Array](https://github.com/Microsoft/TypeScript/blob/master/lib/lib.d。例如ts#L1111)和[ArrayConstructor](https://github.com/Microsoft/TypeScript/blob/master/lib/lib.d.ts#L1294) –

回答

1

接口是一個合同,而不是實現。您的EnglishChinese成員正是接口不支持的實例。它們也是靜態的,在接口上也是不正確的。你可以重構它是這樣的:

export interface Languages{ 
    English: Language; 
    Chinese: Language; 
} 

export interface Language { 
    id: number; 
    section:number; 
    name: string; 
} 

更好的設計是使用一本字典或列表的查找,特別是如果這是一個非固定大小的列表,語言可能在以後添加。例如:

export interface Languages{ 
    getLanguageByCode(isoCode:string): Language; 
    getLanguageById(id: number): Language; 
    allLanguages: Language[]; 
}