告别编译步骤:用 skills 在 Node.js 22 上实现零构建的原生 TypeScript 类型剥离
告别编译步骤用 skills 在 Node.js 22 上实现零构建的原生 TypeScript 类型剥离【免费下载链接】skillsMy own collection of skills for modern Node.js development项目地址: https://gitcode.com/gh_mirrors/skills15/skills还在为 TypeScript 项目配置繁琐的构建流程而头疼吗开源项目skills面向 AI 辅助开发的 Node.js 最佳实践技能库中的 node 技能 给出了简洁答案借助 Node.js 22 的TypeScript 类型剥离Type Stripping你可以让.ts文件像 JavaScript 一样直接被node命令运行实现零构建的 TypeScript 开发体验。什么是 TypeScript 类型剥离为什么它能告别编译传统工作流里TypeScript 必须先经过tsc编译成 JavaScript 才能运行还要额外搭配 ts-node、tsx 等工具。而Node.js 22 原生 TypeScript 支持走的是另一条路类型剥离 运行时剥掉类型注解而非转译代码。它的本质差异是传统编译方案Node.js 22 类型剥离先编译再运行直接运行.ts文件依赖 ts-node / tsx 等工具零额外依赖开箱即用编译可能改变运行时行为只做删除不转译行为可预期版本支持上Node.js 22.6加启动参数node --experimental-strip-types app.ts即可体验Node.js 22.19 / 23.6 / 24默认开启直接node app.ts运行无需任何标志。这一能力在 skills 项目中被明确列为 Node.js 首选实践——详见 skills/node/SKILL.md 中 TypeScript with Type Stripping 一节的推荐策略。快速上手3 步配置零构建 TypeScript 项目第 1 步确认 Node 版本node -v # 需要 22.622.19 体验最佳免标志位第 2 步按类型剥离要求编写代码类型剥离只删除类型不改写代码因此有几条硬性规则完整清单见 skills/node/rules/typescript.md✅ 类型导入必须用import type或内联type关键字❌ 不用enum改用as const的常量对象❌ 不用namespace改用标准模块导出❌ 构造函数中不写参数属性constructor(public name: string)改为显式声明成员✅ 导入路径保留.ts扩展名例如import { helper } from ./helper.ts。一个最小可运行示例摘自 node 技能文档// greet.ts import type { IncomingMessage } from node:http; const greet (name: string): string Hello, ${name}!; console.log(greet(world));运行它node greet.ts # 无编译、无 ts-node、无 tsx第 3 步配置 tsconfig.json 做只检查、不产出skills 仓库本身就是零构建的活例子tsconfig.json 中关键选项是noEmit: true——TypeScript 只负责类型检查Node.js 负责执行两者各司其职。建议配合这几个选项module: NodeNextmoduleResolution: NodeNext与原生 ESM 解析对齐allowImportingTsExtensions: true允许导入时写.ts扩展名isolatedModules: true/verbatimModuleSyntax: true从编译器层面守住类型剥离的兼容边界。项目里的 src/index.ts 就是一个纯粹用 TS 直接维护的入口配合 package.json 中的typecheck脚本tsc --noEmit完成检查整个仓库没有任何编译产物目录。常见踩坑清单这些语法无法被剥离新手最常遇到的问题几乎都是写了需要转译的语法。下面对照表帮你自查❌ 不兼容写法✅ 类型剥离友好替代enum Status { ... }const Status { Active: active } as constnamespace Utils { ... }标准export模块constructor(public name: string)类内显式声明属性再赋值import { User } from ...仅当类型用import type { User } from ...旧版实验性装饰器TC39 Stage 3 标准装饰器 小贴士开启verbatimModuleSyntax后混用值导入和类型导入会直接报错等于让编译器帮你提前排雷。测试与发布零构建不打断测试和发包流程测试零改造。Node.js 内置测试运行器可以直接执行 TS 测试文件skills 项目的 package.json 中test脚本就是最简的node --test。仓库中的示例服务 graceful-server.ts 及其配套测试即为真实参考。发布时才编译。开发阶段零构建不代表发布放弃编译。skills/node/rules/typescript.md 建议为发布单独维护一份构建配置tsconfig.build.json开启declaration、outDir等选项生成.d.ts与 JS 产物用rewriteRelativeImportExtensions把.ts导入改写为.js——开发和发布两条轨道互不干扰。总结把构建复杂度交给类型系统而不是构建管线通过 skills 项目沉淀的最佳实践Node.js 22 上的 TypeScript 开发可以概括为一句话运行时交给 Node类型检查交给 tsc --noEmit构建只在发布时发生。想深入更多 Node.js 最佳实践可继续浏览技能索引skills/node/SKILL.md —— 异步模式、错误处理、流、性能调优等完整规则入口skills/node/rules/modules.md —— ESM 模块规范skills/nodejs-core/SKILL.md —— 深入 V8、libuv 与 Node.js 内核机制AGENTS.md —— 本仓库的架构说明与常用命令速查【免费下载链接】skillsMy own collection of skills for modern Node.js development项目地址: https://gitcode.com/gh_mirrors/skills15/skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

kotlin浅谈从高阶函数到inline noinline crossinline

kotlin浅谈从高阶函数到inline noinline crossinline

看完上篇,大致能理解 function type 与 lambda receiver 之间的关系。下面来看一下一个高阶函数在编译之后会变成什么查看字节码Decompile可以看到,高阶函数在编译之后,变成了普通的java函数接下来看看,如果调用这个高阶函数&…

2026/10/9 5:40:43 阅读更多 →
面试问:数据出现异常波动,如何让 Agent 自动定位根因?| 美团

面试问:数据出现异常波动,如何让 Agent 自动定位根因?| 美团

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 5:40:43 阅读更多 →
openrig:Claude Code与Codex的本地配置编排实战

openrig:Claude Code与Codex的本地配置编排实战

1. 从 openrig 这个标题说起:它到底想解决什么问题第一次看到openrig这个名字,我脑子里蹦出来的第一反应是“open rig”,也就是“开放式的设备/工具架”。结合热搜词里那一串Claude Code、Codex、YAML、Node.js,基本可以判断出&a…

2026/10/9 5:39:43 阅读更多 →

最新新闻

AI系统扩容避坑指南:横向扩容还是纵向扩容?从原理到决策框架

AI系统扩容避坑指南:横向扩容还是纵向扩容?从原理到决策框架

1. 扩容决策的起点:两个方向,两种代价先聊一个我经常被问的问题:AI系统跑不动了——推理延迟飙升、训练任务排队、GPU显存告急——到底该加机器还是换大机器?这个问题听起来简单,但每次认真回答完,对方都会…

2026/10/9 6:04:00 阅读更多 →
任务管理系统APP毕业设计避坑指南:状态流转与循环提醒实现

任务管理系统APP毕业设计避坑指南:状态流转与循环提醒实现

做毕业设计选“个人任务管理系统APP”这类题目时,很多同学一开始会觉得简单:不就是一个TodoList加个数据库,再加个手机页面吗?等真正动手才发现,任务管理的业务逻辑远不止“增删改查”。状态怎么流转、循环任务怎么处理…

2026/10/9 6:04:00 阅读更多 →
蓝桥杯C++备赛:数据结构与STL容器实战指南

蓝桥杯C++备赛:数据结构与STL容器实战指南

1. 为什么DAY5只练数据结构:竞赛里的“地基”思维1.1 从一道送分题看数据结构的价值如果你参加过蓝桥杯,哪怕只是做过几套真题,一定会发现一个规律:C组的题目里,真正考“奇技淫巧”的并不多,大部分题目的核…

2026/10/9 6:04:00 阅读更多 →
无网络环境下Docker复杂应用离线迁移完整指南:从镜像到数据

无网络环境下Docker复杂应用离线迁移完整指南:从镜像到数据

最近接手了一个挺棘手的活儿:要在完全无网络、也没有私有镜像仓库的隔离环境里,把一套十几台容器、涵盖数据库、缓存、消息队列、应用前后端、定时任务的多应用复杂 Docker 环境,原封不动迁到另一台新机器上。很多人一听"无网络、无镜像…

2026/10/9 6:04:00 阅读更多 →
Flutter组件鸿蒙化适配全流程实战:以books_finder图书检索库为例

Flutter组件鸿蒙化适配全流程实战:以books_finder图书检索库为例

最近在做 Flutter 跨端组件库的鸿蒙化适配时,正好把一套自维护的图书检索组件 books_finder 移植到了鸿蒙生态上。这个组件的主要定位是图书元数据的聚合检索、数据资产标准化管理以及精确检索匹配,在安卓和 iOS 上已经跑了小半年,这次折腾鸿…

2026/10/9 6:04:00 阅读更多 →
SpringBoot集成Hyperledger Fabric实现DID去中心化身份认证

SpringBoot集成Hyperledger Fabric实现DID去中心化身份认证

简介:本资源是一套面向本科毕业设计的分布式身份认证系统用户端实现,基于Hyperledger Fabric区块链构建可信身份管理体系,适用于信息安全、区块链开发与Java后端方向的学习者与毕设开发者。项目采用SpringBoot框架搭建,完整覆盖用…

2026/10/9 6:02:59 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 13:34:55 阅读更多 →