TypeScript 0.9.5:如何使用静态成员和实现它的类来定义接口?

时间:2014-01-08 10:10:00

标签: typescript

这用于在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,但没有实现它"。

我需要更改什么才能再次编译?

注意: 在此上下文中使用接口的原因是: - 有关于什么类实现的文档 - 让编译器检查接口是否正确实现。

1 个答案:

答案 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 
}