打字稿:实现转换器以在运行时访问类型
TSC 将 TS 代码编译为 JS 后,类型被移除,不再可用。
但是,原则上,应该可以通过使用 webpack/typescript/Vite 转换器在运行时使类型可用。
有没有人做到这一点?
type Data = {
name: string;
age: number;
};
// How can we implement `getType()`?
console.log(getType<Data>());
// It should print:
// { name: 'string', age: 'number' }
在编译类型中,类型Data是已知的,因此应该可以(尽管不容易)实现一个转换器,使该类型在运行时可用。
这将启用大量用例,例如 IO 验证。
对于我的用例,我不需要诸如泛型之类的高级类型。我只需要类型:对象、数组、字符串、数字和日期。
上下文:我正在构建一个 RPC 实现(https://github.com/brillout/wildcard-api)。
编辑:我不是在寻找像zod这样的东西,你用 zod 定义一个架构,然后推断 TypeScript 类型。我的用户直接使用 TypeScript 定义他们的类型,我需要在运行时知道这些类型。所以我确实需要一个编译时转换器。