如何在 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) {}
}