如何在 TypeScript 中使用泛型类型初始化对象?
How to initialize object with generic type in TypeScript?
我试着这样做:
export class MapperObject<V> {
public obj: V = {};
}
没用。此外,我需要像这样填充对象:
this.obj[key] = "1";
没有初始化会引发错误。
简短的回答是您不能以类型安全的方式执行此操作,因为您不知道 V
的字段是必需的。您可以使用类型断言强制初始化,但这并不完全安全:
export class MapperObject<V> {
public obj: V = {} as any;
}
let m = new MapperObject<{ requiredProp: string }>();
m.obj.requiredProp // undefined even though it is required
安全的解决方案是使用一个需要为 obj
传递默认值的构造函数:
export class MapperObject<V> {
constructor(public obj: V) {}
}
我试着这样做:
export class MapperObject<V> {
public obj: V = {};
}
没用。此外,我需要像这样填充对象:
this.obj[key] = "1";
没有初始化会引发错误。
简短的回答是您不能以类型安全的方式执行此操作,因为您不知道 V
的字段是必需的。您可以使用类型断言强制初始化,但这并不完全安全:
export class MapperObject<V> {
public obj: V = {} as any;
}
let m = new MapperObject<{ requiredProp: string }>();
m.obj.requiredProp // undefined even though it is required
安全的解决方案是使用一个需要为 obj
传递默认值的构造函数:
export class MapperObject<V> {
constructor(public obj: V) {}
}