我正在尝试在 TypeScript 中实现这一点:
接口 IViewModel { } 接口 IScope<TViewModel 扩展 IViewModel> { 虚拟机:TViewModel;// {1} } 接口 IController<TViewModel 扩展 IViewModel,TScope 扩展 IScope<TViewModel>> { } 类 Controller<TViewModel 扩展 IViewModel,TScope 扩展 IScope<TViewModel>> 实现 IController<TViewModel, TScope> { } // {2}
但我在第 {2} 行遇到错误:“类型‘IScope<TViewModel extends IViewModel>’不满足类型参数‘TScope extends IScope<TViewModel>’的约束‘IScope<TViewModel extends IViewModel>’。”
如果我更进一步并尝试扩展 Controller 类:
接口 IMainViewModel 扩展 IViewModel { } 类主控制器 扩展 Controller<IMainViewModel, IScope<IMainViewModel>> { } // {3}
我在第 {3} 行收到类似错误:“类型 'IScope<IMainViewModel>' 不满足类型参数 'TScope extends IScope<TViewModel>' 的约束 'IScope<TViewModel extends IViewModel>'。”
在我看来,这应该可行。我究竟做错了什么?
我对 TypeScript 很陌生,我主要用 C# 编写代码,如果我用 C# 编写此代码 - 只需将 TypeScript 语法重写为其 C# 等效项,它就可以正常工作。
最奇怪的是,如果我删除第 {1} 行,两个错误都会消失。