我想在打字稿來實現這一點:T型不滿足類型參數P錯誤的約束下,在打字稿
interface IViewModel { } interface IScope<TViewModel extends IViewModel> { vm: TViewModel; // {1} } interface IController<TViewModel extends IViewModel, TScope extends IScope<TViewModel>> { } class Controller<TViewModel extends IViewModel, TScope extends IScope<TViewModel>> implements IController<TViewModel, TScope> { } // {2}
,但我發現就行{2}出現錯誤:「類型'IScope < TViewModel extends IViewModel >'不滿足約束'IScope < TViewModel extends IViewModel >'for type parameter'TScope extends IScope <TViewModel>'。「
如果我更進一步,儘量延長控制器類:
interface IMainViewModel extends IViewModel { } class MainController extends Controller<IMainViewModel, IScope<IMainViewModel>> { } // {3}
我得到的線類似的錯誤{3}:「類型‘的iScope <IMainViewModel>’不滿足約束「的iScope < TViewModel擴展了IViewModel >'用於類型參數'TScope extends IScope <TViewModel>'。「
在我看來,這應該工作。我究竟做錯了什麼?
我對TypeScript非常新穎,主要是用C#編寫代碼,如果我用C#編寫代碼 - 只需將TypeScript語法重寫爲C#等效,它就可以工作。
最奇怪的是,如果我刪除第{1}行,那麼這兩個錯誤都會消失。