【发布时间】:2022-01-26 11:06:11
【问题描述】:
我是打字稿的新手,我正在尝试正确定义一个类,将某种类型的对象转换为具有相同属性的类。但是,我无法正确定义此类上的键,因为它们是通用的:
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 相同的索引签名。有人可以帮帮我吗?
【问题讨论】:
标签: typescript index-signature