RFLCT: 将运行时类型元数据带入类型脚本 7

2026年8月27日1 次浏览来源:Dev.to阅读原文

如果你在TypeScript中构建了大规模应用,你是否有机会使用依赖注射(DI)容器.

作为InversifyJS的创造者,我花了多年时间深刻地思考了控制倒置,脱钩,以及如何让企业模式在TypeScript中感觉自然.

但是,这些年来,房间里出现了一头明目张胆的大象:我们非常依赖和依赖。

这些编译器的旗帜为我们提供了很好的服务,但它们正是这种经验。

它们将我们与遗留的装饰器执行联系起来,需要特定的编译器配置,并且经常感觉像一个魔法黑匣子,它并不完全与现代建筑管线相配合.

最近我花了很多时间思考 我们最终如何完全放下这些旗帜 同时保持开发者纯洁的经验 随着TypeScript 7的发布,我很高兴介绍这个解决方案:QQ RFLCT.

什么是RFLCT吗?

RFLCT是TypeScript 7的超时(AOT)反射元数据注射器.

它在建时直接注入.

零取装饰.

无.

它通过无插件与几乎所有的构建工具(Vite, Rollup,webpack,esbuilding)无缝地融合,也可以使用使用TypeScript 7 API的内置CLI进行独立项目.

让我们看看用RFLCT写代码的感受。

The Magic: Before and After With RFLCT, 您要使用特殊的包装类型来注释您想要曝光到运行时元数据的类型 。

您所写的: RFLCT 将其编译为: 注意到接口是如何安全地转换成全局符号的, 并且元数据被明确注册, 而看不到一个单独的装饰器 。

宽度大于正反JS 虽然我建立RFLCT的主要动机是为下一代的InversifyJS铺平道路,但这种基本的原始——可靠、无装饰者——释放出运行时类型的元数据的方法——更是松锁了。

因为RFLCT规范了类型在构建时如何被映射到内存,它在整个生态系统中具有巨大的潜力: Custom DI Engines:构建自己的轻量级反转控制容器而无需元数据锅炉板.

对象映射与水分:轻松映射数据库或API JSON结果直接回回即时分类.

RPC框架:通过验证对编译时间元数据的来历参数,保证类型安全网络边界.

运行时间验证:通过精确地读取构造器或方法所期望的类型来进行深运行时间验证.

How It Works: The Three Transforms under the high, RFLCT 在您构建步骤中执行三个核心转换:

  1. – 一个文件中的"全球类型注册"每类,接口,和类型别名都是在全球对象上全过程注册的.
    界面和类型成为普遍独特的符号(例如.).
    类映射直接到他们的构造者。
    2.
    参数类型元数据 任何带有(或)注释的参数都告诉编译器生成一个调用: 构造器: , 方法:
  2. —— 编译-时间类型分辨率 写作起到宏观的作用。
    它在编译时被替换为 : 编译到只编译到 Smart Symunications Qualification 的运行时间身份 . . . . .
    生成的符号使用结构为 .
    这可以防止相撞,允许小/patch版本共享符号,并确保共享库类型解决内存中完全相同的符号引用. * RFLCT目前处于早期阶段,npm模块尚未公布于公共登记处。
    现在,为了尝试它,你需要直接从 GitHub 下载源并在当地建立.
    1.
    来源2.
    项目设置 将本地软件包链接到您的工程 : 您需要从您的应用程序的切入点导入一次, 以多填充全球 API :
    3.
    配置你的构建工具,因为RFLCT是建在上方的,它直落到你现有的管道上。
    维特: (用于滚滚、倒置和网络包装的插件是 als)
分享