这用于在TypeScript 0.9.1.1中编译(方法实现省略):
module MyNodule {
export interface ILocalStorage {
SupportsLocalStorage(): boolean;
SaveData(id: string, obj: any): boolean;
LoadData(id: string): any;
}
export class LocalStorage implements ILocalStorage {
static SupportsLocalStorage(): boolean {
return true;
}
static SaveData(id: string, obj: any): boolean {
return true;
}
static LoadData(id: string): any {
return {};
}
}
}
在TypeScript 0.9.5中,我遇到了编译器错误" Class LocalStorage声明了接口ILocalStorage,但没有实现它"。
我需要更改什么才能再次编译?
注意: 在此上下文中使用接口的原因是: - 有关于什么类实现的文档 - 让编译器检查接口是否正确实现。
答案 0 :(得分:16)
接口定义了类的实例,而不是类的内容。所以简而言之,你不能用静态成员来实现它。
由于typeScript是结构类型,因此您可以将类分配给接口。在这种情况下,类实际上是一个实例:
module MyNodule {
export interface ILocalStorage {
SupportsLocalStorage(): boolean;
SaveData(id: string, obj: any): boolean;
LoadData(id: string): any;
}
export class LocalStorage {
static SupportsLocalStorage(): boolean {
return true;
}
static SaveData(id: string, obj: any): boolean {
return true;
}
static LoadData(id: string): any {
return {};
}
}
var foo : ILocalStorage = LocalStorage; // Will compile fine
}