2017-05-08 48 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[]; 
}