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 的开发体验将会有质的飞跃,一起期待吧!

相关推荐
剪刀石头布啊2 分钟前
var、let、const与闭包、垃圾回收
前端·javascript
剪刀石头布啊4 分钟前
js常见的单例
前端·javascript
剪刀石头布啊4 分钟前
数据口径
前端·后端·程序员
剪刀石头布啊8 分钟前
http状态码大全
前端·后端·程序员
剪刀石头布啊10 分钟前
iframe通信、跨标签通信的常见方案
前端·javascript·html
宇之广曜19 分钟前
搭建 Mock 服务,实现前端自调
前端·mock
yuko093121 分钟前
【手机验证码】+86垂直居中的有趣问题
前端
用户15129054522025 分钟前
Springboot中前端向后端传递数据的几种方式
前端
阿星做前端25 分钟前
如何构建一个自己的 Node.js 模块解析器:node:module 钩子详解
前端·javascript·node.js
用户15129054522029 分钟前
Web Worker:让前端飞起来的隐形引擎
前端