我实现了一个通用功能,用于将选项与默认选项合并:
// definition
protected defaultOptions<T>(options: T, type: new () => T): T {
return {
...options,
...new type(),
};
}
它就像一个符咒,但我总是需要将类型作为第二个参数传递
// use it like this
upload(file: File, options: FilesUploadOptions) {
options = this.defaultOptions(options, FilesUploadOptions);
...
...
}
问题:
有一种方法可以达到相同的结果,但是要删除方法defaultOptions的第二个参数,并从第一个参数中获取并创建具有该类型的新实例?
// definition
protected defaultOptions<T>(options: T): T {
const type = ???????; // some smart type generics here :)
return {
...options,
...new type(),
};
}
这样,我可以像这样简单地使用它:
upload(file: File, options: FilesUploadOptions) {
options = this.defaultOptions(options);
...
...
}
谢谢!
答案 0 :(得分:1)
有一种方法可以达到相同的结果,但是要删除方法defaultOptions的第二个参数,并从第一个参数中获取并创建具有该类型的新实例?
不,那不可能。在TypeScript中,类型是纯编译时构造。编译为JavaScript时将其删除。这意味着在运行时无法访问它们。