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