typescript - 构造函数作为参数:将类的泛型推断为函数
问题描述
如何让 typescript 编译器在这个例子中推断出正确的类型?
interface A<T> {
do(param: T): void
}
class A2 implements A<string>{
do(param){}
}
function createA<T>(constr: new () => A<T>, param: T){}
createA(A2, "")
在这里它不会编译并且 T 被推断为任何类型
解决方案
您还需要使类成为通用类,以便您可以告诉 typescript 接口参数和函数参数属于同一类型,而无需重复自己:
class A2<T extends string> implements A<T>{
go(param: T) {
param.split('') // string method is allowed here
}
}
推荐阅读
- php - 将上传的图片从 Mysql 渲染到前端
- macos - 无法使用新的 Mac M1 构建 Docker 映像
- angular - Angular:通过http请求进行网络查询,但得到CORS错误
- java - 通过 Random.nextLong() 检查 long 是否可以随机生成
- amazon-web-services - AWS ECS & Prisma2 & RDS:将本地机器连接到私有数据库以使用 prisma 进行迁移?
- java - 双向词典应用的搜索查询设计
- crystal-reports - 水晶报告 2021
- flutter - Board.fromDatabase(DataSnapshot snapshot) 之后的“ : ”是什么意思。我想不明白“:”如何在这里工作以及它是什么。如果可能,例如
- background - 滑块旋转背景图像未显示
- python - 检查文件是否可执行(二进制/共享对象/shell脚本等)而不检查可执行权限