angular - TypeScript 中默认的通用约束
问题描述
我正在使用带有 Angular 的 TypeScript 2.7.2。我已经在谷歌上搜索了一段时间以了解我们如何为通用约束指定默认类型。
class BaseComponentModel {
}
class BaseComponent<T extends BaseComponentModel = BaseComponentModel> {
@Input()
public model: T;
}
class ButtonComponentModel {
}
class ButtonComponent extends BaseComponent<ButtonComponentModel> {
}
上面的代码失败了。
解决方案
我想我也许能猜到你的错误,但首先要做到这一点;关于泛型的代码很好。
我猜你的错误是关于实验性装饰器的,你可以用你的tsconfig.json
文件来抑制它:
{
"compilerOptions": {
"experimentalDecorators": true
}
}
使用此标志,我没有错误,使用以下迷你测试应用程序。
包.json
{
"name": "test",
"scripts": {
"tsc": "tsc"
},
"dependencies": {
"@angular/core": "6.0.4",
"rxjs": "^6.2.1",
"zone.js": "^0.8.26"
},
"devDependencies": {
"typescript": "2.7.2"
}
}
tsconfig.json
{
"compilerOptions": {
"experimentalDecorators": true
},
"exclude": [
"node_modules"
]
}
应用程序.ts
import {Component, Input} from '@angular/core';
class BaseComponentModel {
}
class BaseComponent<T extends BaseComponentModel = BaseComponentModel> {
@Input()
public model: T;
}
class ButtonComponentModel {
}
class ButtonComponent extends BaseComponent<ButtonComponentModel> {
}
推荐阅读
- android - FrameLayout 不显示正确的宽度
- python - 一种获取主板上内存插槽总数的方法
- angular - (Ionic v4 + ionic-tooltips)-> 不能绑定到“ngIf”,因为它不是“div”的已知属性
- javascript - 未选中复选框时,条件表单不会呈现,Safari 错误 (12.2)。在 Chrome 和 Firefox 中运行良好
- oracle - Oracle:如何检查集合类型列中是否存在值?
- r - 如何获取值第一次低于阈值(按行)的索引?
- extjs - extjs如何使用代理extraParams将数据从视图传递到存储
- python - 如何在 Numba cuda 中对字符串数组执行内核函数?
- python - 如何减少matptolib中两个条之间的空间?
- python - 在 Python3 中使用多处理进行文件读取