javascript - 类型:类由抽象类扩展
问题描述
我有抽象类:
abstract class DataType<D> {
constructor(protected data: D) {}
...other
}
和我的抽象类扩展的类:
type PersonData = {
firstName: string;
lastName: string;
...other props
}
class Person extends DataType<PersonData> {
...methods with body specific for person
}
我需要像这样在 const 中保存类 Person (和其他):
const DataClasses: DataConstructor = {
person: Person
...other
}
我需要这样使用它:
new DataClasses['person']({...PersonData}) // exacly is same as: new Person({...PersonData})
但我对 DataConstructor 类型有疑问。我不知道如何动态地做到这一点。我尝试了很多组合,最接近的是:
type DataConstructor = {
[name: string]: new (data: ConstructorParameters<typeof Person>[0]) =>
DataType<ConstructorParameters<typeof Person>[0]>
}
但我必须在 typeof 中添加 Person 类。我需要这个动态。DataConstructor 必须接受由 DataType 扩展的任何类并返回对象以使用它:new DataClasses['person'](PersonDataObjec)
。所有类在构造函数中只有一个属性——数据。
解决方案
推荐阅读
- java - Java - 如何检查来自同一个抽象类的两个对象是否相等
- javascript - 如何更改加速度计的值
- matlab - 如何将 tsne() 应用于 MATLAB 表格数据?
- ios - 如何使用 Core Data 中的选项和“无”选项创建 Eureka AlertRow?
- tomcat - Ingress 和 Helm Chart HTTPS 问题
- ubuntu - 持续关注 kubectl get pods 的脚本
- forms - MS-Access 2010 表单:字段不接受带有 2 个连字符的数据源
- mariadb - MariaDB 崩溃原因
- chai - cypress 的单个语句中的多个断言
- c - 用c写一个简单的Linux shell