实现没有约束的通用接口时的通用类​​型约束

时间:2015-11-11 20:26:42

标签: generics typescript resharper type-constraints typescript1.6

我的问题更多是关于Resharper TypeScript支持,因为您将在一段时间内找到它。

我的存储库有这样一个通用接口

export interface IRepository<T> {
    getAll(): IPromise<T[]>;
    getItem(id: number): IPromise<T>;
    add(item: T): IPromise<T>;
    update(item: T): IPromise<T>;
    deleteItem(item: T): IPromise<T>;
}

以下这种实现方式。请注意,类的泛型类型被约束为扩展IIdentifyable接口,这反过来确保类型包含数字Id属性

export abstract class BaseHttpRepository<T extends IIdentifyable> implements IRepository<T> {
    // ...
    add(item: T): angular.IPromise<T> {
        var url = this.getFullUrl();
        return this.httpService.post<T>(url, item);
    }
    // ...
}

我认为代码是正确的,因为带有TS1.6的Visual Studio编译得很好。但是,Resharper给我一个错误,你可以在下面找到

resharper typescript error

我在VS2013 Ultimate上使用最新的Resharper版本。仅仅是Resharper的问题还是代码实际上是错误的?

1 个答案:

答案 0 :(得分:3)

  

仅使用Resharper是问题还是代码实际上是错误的?

如果您可以运行tsc -p <path your tsconfig.json>并且没有错误,=&gt;一个resharper问题。请注意,resharper与官方打字稿实现中有自己的langauge服务实现不同

除此之外基于您的代码:

export interface IRepository<T> {
    add(item: T): IPromise<T>;
}
export abstract class BaseHttpRepository<T extends IIdentifyable> implements IRepository<T> {
    // ...
    add(item: T): angular.IPromise<T> {
        // ...
    }
    // ...
}

应该适用于tsc

相关问题