2

我的问题是更多关于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); 
    } 
    // ... 
} 

我猜的代码是作为Visual Studio与TS1.6正确编译这很好。然而,ReSharper的获取我说,你可以在下面找到

resharper typescript error

我用我的VS2013旗舰版的最新版本的ReSharper的一个错误。仅仅是Resharper的问题还是代码实际上错了?

回答

3

这是Resharper的问题吗?还是代码实际上错了?

如果你可以运行tsc -p <path your tsconfig.json>,你会得到没有错误,=>一个ReSharper的问题。请注意,resharper有自己的语言服务实现不同官方 typescript实现。

除此之外,根据您的代码:

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

+0

其实我希望像这样的答案。我只是很好奇为什么语言的实现可能会有所不同,而语言是正式的。 正如我所说 - 代码编译罚款和香草VS通知我没有错误,当我禁用Resharper。我想知道的是,为什么代码很好时会出现这种差异。我想我应该在Resharper论坛上发帖并呼救! :) – patryk