TypeScript编译器消息:“错误TS2137:类声明接口但不实现它”

时间:2013-12-05 16:21:07

标签: typescript

我对typescript编译器版本0.9.5 beta有这种奇怪的行为:

在库定义文件lib.d.ts中给出这个(精简的)代码:

declare module Test {
    export interface GenericInterface<T> {
        method(t:T):T;
    }

    export interface IFoo {
        generic<T>(): GenericInterface<T>;
    }

    export class Foo implements IFoo {
        generic<T>(): GenericInterface<T>;
    }
}

我为Foo类的声明得到了这个编译器错误:

    error TS2137: Class Foo declares interface IFoo but does not implement it:
    Types of property 'generic' of types 'Foo' and 'IFoo' are incompatible:
        Call signatures of types '<T>() => GenericInterface<T>' and '<T>() => GenericInterface<T>' are incompatible:
            Types of property 'method' of types 'GenericInterface<{}>' and 'GenericInterface<T>' are incompatible:
                Call signatures of types '(t: {}) => {}' and '(t: T) => T' are incompatible.

有趣的是,如果method没有泛型返回值,编译器很高兴。此外,如果T的参数列表中存在generic类型,问题就会消失。 我知道这是一个非常特殊的用例(类型参数只影响返回类型;在我的情况下,我确实有另一个参数,隐含地具有该信息),但是现在这就是我现有库的样子

我做错了什么,或者这是编译器中的错误?

1 个答案:

答案 0 :(得分:0)

绝对是编译器错误 - 这适用于0.9.1.1。