是否有可能做一些像这样的打字稿?
如果不是,是否有正式解释说明为何编译器无法推断嵌套类型参数?
这是我要实现的示例:
interface TestFilter {
name?: string;
}
interface FilterComponent<F> {
setFilter(filter: F)
}
class TestFilterComponent implements FilterComponent<TestFilter> {
private filter: TestFilter;
setFilter(filter: TestFilter) {
this.filter = filter;
}
}
// Can I use F without declaring it as another type parameter?
// Something like: class FilterWrapperComponent<FC extends FilterComponent<F>>
abstract class FilterWrapperComponent<F, FC extends FilterComponent<F>> {
private sidebarFilter: FC;
private modalFilter: FC;
public passFilter(filter: F) {
this.sidebarFilter.setFilter(filter);
this.modalFilter.setFilter(filter);
}
}
// I want to just write "extends FilterWrapperComponent<TestFilterComponent>"
// and get TestFilter as F automatically
class TestFilterWrapperComponent extends FilterWrapperComponent<TestFilter, TestFilterComponent> {
}
也可在操场上使用。
默认情况下,通用参数值为{}
。当省略参数时适用。可以使用通用参数defaults更改默认值。
我只想编写“ extends FilterWrapperComponent”并自动将TestFilter获取为F
这是可能以相反的方式,让双方FilterComponent<TestFilter>
并TestFilter
通过仅指定TestFilter
:
abstract class FilterWrapperComponent<F, FC = FilterComponent<F>> {}
class TestFilterWrapperComponent extends FilterWrapperComponent<TestFilter> {}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句