【发布时间】:2021-12-14 21:21:48
【问题描述】:
我正在使用一个生成 TypeScript 代码的 TypeScript 库,称为 ts-proto
生成的代码如下所示:
//BasicMessage.ts
export interface BasicMessage {
id: Long;
name: string;
}
export const BasicMessage = {
encode(message: BasicMessage) : Writer {
...
}
fromJSON(object: any): BasicMessage {
...
}
}
和
// BasicMessagePlus.ts
export interface BasicMessagePlus {
id: Long;
name: string;
email: string;
}
export const BasicMessagePlus = {
encode(message: BasicMessagePlus) : Writer {
...
}
fromJSON(object: any): BasicMessagePlus {
...
}
}
由于生成了此代码,我无法更改它。我需要做的是创建一个接受类型名称和对象并对其进行编码的方法,如下所示:
function encode(typeName: string, object: any): Writer {
import(`/path/to/${typeName}`);
return <typeName>.encode(<typeName>.fromJSON(object));
}
let writer1 = encode("BasicMessage", { id: 1, name: "Fake" });
let writer2 = encode("BasicMessagePlus", { id: 1, name: "Fake", email: "fake@fake.com" });
我已经尝试过使用 eval 和 globalThis 的所有类型的技巧,但我就是找不到让我做我想做的事情的组合。感谢您的帮助!
【问题讨论】:
标签: typescript types eval