我是打字稿的新手,我正在尝试正确定义一个类,将某种类型的对象转换为具有相同属性的类。但是,我无法正确定义此类上的键,因为它们是通用的:
interface RawAnswer {
__typename: string;
id: string;
meta: Record<string, unknown>;
}
class TrackedAnswer<T> {
// This doesn't work:
// [K in keyof T]: T<K>
constructor(obj: T) {
Object.entries(obj).forEach(([key, value]) => {
// this is just an example, I'm aware that this is useless
this[key] = value;
});
}
}
const raw: RawAnswer = { __typename: "StringAnswer", id: "123", meta: {} };
const answer = new TrackedAnswer(raw);
我希望TrackedAnswer
该类具有与本例相同的索引签名RawAnswer
。有人可以帮我吗?