所以我有这个 TypeScript 类,其中有一个泛型和一个 keyof generic 类型的属性,如下所示:
export class ColumnDefinition<T> {
field: keyof T
}
编译器抱怨,因为它需要一个我在编译时没有的默认值,但我不想允许用户在此属性中使用 null 或 undefined ,所以我不能这样做:
export class ColumnDefinition<T> {
// can't do this, I need to make the field mandatory
field: keyof T | undefined;
}
我的问题是,有没有一种方法可以在运行时用默认值初始化字段,而无需在编译时知道泛型?就像设置通用类中的第一个键一样?
注意:我不想禁用 ts-ignore,我正在寻找真正的解决方案
如果您在构造函数中使用可见性修饰符(
field
、public
、private
)设置protected
,那么它将成为类属性,在创建类时传入值时设置
export class ColumnDefinition<T> {
constructor(private field: keyof T){ }
logField(){
console.log(this.field);
}
}
const colDef = new ColumnDefinition<{ x: number; }>('x');
colDef.logField(); //"x"
const badColDef = new ColumnDefinition<{ x: number; }>('foo'); //Error!
上查看它的实际应用