最近在将项目改为支持typescript
。
在使用 ant deisgn
的 表单验证高阶组件 Form.create()
时遇到了以下报错的问题。
奇怪的是,如果我不用 Decorators
的写法又能正确。
请问如果解决在 Decorators 下报错的问题
最近在将项目改为支持typescript
。
在使用 ant deisgn
的 表单验证高阶组件 Form.create()
时遇到了以下报错的问题。
奇怪的是,如果我不用 Decorators
的写法又能正确。
请问如果解决在 Decorators 下报错的问题
3 回答1.8k 阅读✓ 已解决
1 回答1.6k 阅读✓ 已解决
4 回答1.6k 阅读✓ 已解决
2 回答2.4k 阅读✓ 已解决
1 回答2.5k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
2 回答1.6k 阅读✓ 已解决
目前Typescript的装饰器类型验证比较死,比如类装饰器只支持的
<T>(cls: T)=> T
这种类型,如果你要返回新的类型则是不被允许的下面的代码可以检查通过
下面的代码则无法检查通过:
从上面的错误信息大概可以推算出,Typescript要求装饰器返回的类型和被包装类的类型保持兼容。
所以回到:你的问题,Form.create()作为装饰器使用时,Form.create()返回的类型已经和原本组件类不兼容了,所以这里无法通过类型检查
PS: 尽量避免使用装饰器,因为Typescript的所使用装饰器语言规范已经被废弃了,免得成为包袱