Typescript Go 尝鲜体验指南

大型 Monorepo 中 TS 语言服务(Typescript Language Server)启动慢、跳转慢的问题或许有救了,官方正在使用 Golang 重写 TS Compiler。预期能有 10 倍的速度提升,内存使用也将显著减少!

具体内容可参见官方博文:A 10x Faster TypeScript - TypeScript

当前最新版本为 TypeScript 5.8,5.9 即将推出,原代码库会继续开发 6.x 系列,6.0 版本将有一些弃用和突破性变化。Golang 版本开发完成后将作为 TypeScript 7.0 发布 ,在 7.0 版本足够成熟前,6.x 系列会持续维护。

也许你会好奇为什么选用 Golang 重写,而非前端圈子更流行的 Rust。@RyanCavanaugh 给出了他理由,主要还是基于可移植性、开发周期和兼容性的考量。

虽然项目还处于早期阶段,无法用于生产,但这并不影响我们尝鲜体验,整体还是非常简单的。

仓库地址:GitHub - microsoft/typescript-go

环境准备

仓库克隆

shell 复制代码
git clone --recurse-submodules https://github.com/microsoft/typescript-go.git
cd typescript-go
git submodule update --init --recursive # submodule 初始化

依赖安装

首先安装 Go 1.24 or higher,MacOS 可使用 Homebrew 快速完成:brew install golang

安装完成后,进入项目构建产物

shell 复制代码
npm install # 安装依赖
npm run build # 构建产物

仓库下会多出一个 built 目录,其中包含所需的 tsgo二进制可执行文件,它会被后续流程使用到。

text 复制代码
built
└── local
    ├── lib.d.ts
    ├── ···
    └── tsgo

启动 VS Code

根据 README 提示,复制 .vscode/launch.template.json.vscode/launch.json

然后切换到调试面板,选择选择刚刚添加的配置启动,一个新的 VS Code 编辑器将被打开。

注意不要关闭原 typescript-go 项目下的调试进程

如上所示,若在 「输出」面板中可以看到 typescript-go,说明启动成功。

整体感受:快!真的很快 视频中的演示项目非常庞大,每天都有无数业务同学因此困扰。在 typescript-go 的加持下,类型加载的等待时间明显降低到了可接受范围内,大部分曾经需要加载若干分钟的文件,现在甚至能够做到秒开。

当然,你也可以把它当成一个常规的编辑器使用,但与 TS 有关的功能,可能存在一些限制。

使用局限

以下是乍一看很容易发现的问题,未被列出的可能还有很多......

  • 智能提示缺失:无法提示变量名、对象属性等
  • 不支持 jsx 语法:所有的属性都是 any,有时会报错
  • 类型识别问题:部分依赖、Project Reference 项目类型识别有误

可能的用途

虽然 typescript-go 项目自身还有很多问题,但若作为一个代码浏览器,或许是一个不错的选择。

比如代码仓库中部署的在线 VS Code 轻量版(如 Github1s),时常因为性能问题无法跳转

可以预见的是,在不久的将来,大型 Monorepo 的开发体验将会有质的飞跃,一起期待吧!

相关推荐
MUTA️13 小时前
Git的使用(程序猿必会)
github
J***Q29214 小时前
Vue数据可视化
前端·vue.js·信息可视化
ttod_qzstudio15 小时前
深入理解 Vue 3 的 h 函数:构建动态 UI 的利器
前端·vue.js
_大龄16 小时前
前端解析excel
前端·excel
一叶茶16 小时前
移动端平板打开的三种模式。
前端·javascript
前端大卫16 小时前
一文搞懂 Webpack 分包:async、initial 与 all 的区别【附源码】
前端
Want59516 小时前
HTML音乐圣诞树
前端·html
老前端的功夫17 小时前
前端浏览器缓存深度解析:从网络请求到极致性能优化
前端·javascript·网络·缓存·性能优化
Running_slave17 小时前
你应该了解的TCP滑窗
前端·网络协议·tcp/ip
程序员小寒18 小时前
前端高频面试题之CSS篇(一)
前端·css·面试·css3