代码:
import { Expose, Type } from "class-transformer";
import { IsDefined, ValidateNested } from "class-validator";
interface A{
...
}
class B{
...
}
class Document<T extends A> {
@IsDefined()
@ValidateNested()
@Type(()=>B)
@Expose()
b: B;
@IsDefined()
@ValidateNested()
@Type(()=>T) //Compile error: 'T' only refers to a type, but is being used as a value here.
@Expose()
a: T;
constructor(b: B, a: T){
this.b = b;
this.a = a;
}
}
- 这会在@Type(()=>T) 的行中给出错误('T' 仅指一种类型,但在此处用作值。)。问题似乎是 T 只是一个类型,没有构造函数。那么,如何向定义中的模板添加构造函数以便编译?
- 我可以摆脱 Document 的构造函数而不会导致错误吗?(因为我将使用 'class-transformer' 中的 'plainToClass' 来创建对象)