惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

小众软件
小众软件
N
News and Events Feed by Topic
A
About on SuperTechFans
aimingoo的专栏
aimingoo的专栏
The Cloudflare Blog
H
Heimdal Security Blog
Schneier on Security
Schneier on Security
Engineering at Meta
Engineering at Meta
Google Online Security Blog
Google Online Security Blog
宝玉的分享
宝玉的分享
AI
AI
The GitHub Blog
The GitHub Blog
MongoDB | Blog
MongoDB | Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
The Last Watchdog
The Last Watchdog
T
Troy Hunt's Blog
S
Security @ Cisco Blogs
H
Hacker News: Front Page
F
Fortinet All Blogs
博客园_首页
S
Secure Thoughts
N
News and Events Feed by Topic
P
Proofpoint News Feed
Microsoft Azure Blog
Microsoft Azure Blog
I
InfoQ
Spread Privacy
Spread Privacy
Hacker News - Newest:
Hacker News - Newest: "LLM"
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Hugging Face - Blog
Hugging Face - Blog
Hacker News: Ask HN
Hacker News: Ask HN
C
CXSECURITY Database RSS Feed - CXSecurity.com
酷 壳 – CoolShell
酷 壳 – CoolShell
Stack Overflow Blog
Stack Overflow Blog
L
LINUX DO - 最新话题
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Schneier on Security
Know Your Adversary
Know Your Adversary
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Scott Helme
Scott Helme
P
Privacy & Cybersecurity Law Blog
S
Securelist
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
O
OpenAI News
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
PCI Perspectives
PCI Perspectives
L
LangChain Blog
雷峰网
雷峰网
Security Archives - TechRepublic
Security Archives - TechRepublic
V2EX - 技术
V2EX - 技术

TypeScript

ts 生态有没有开源的简单的 kv 配置管理项目 - V2EX 你们是怎么学习 typescript 的? - V2EX 用 Go 移植的 TypeScript 7 要来了 - V2EX Typescript 有没有能对接 AI 的知识库或者文档?能处理稍微复杂点的类型 - V2EX typescript 如何返回一个动态对象类型 - V2EX ts 有没有直接能查看最终类型的方法 - V2EX TypeScript Native 预览版发布了 - V2EX 关于 TypeScript 装饰器和接口的问题,请教一下各位 - V2EX 你们 typescript 用自带枚举还是字符串枚举,感觉字符串枚举类型用起来有点不可靠啊 - V2EX effect-ts - V2EX typescript 达人乱入 - V2EX TypeScript 宣布原生移植计划,性能将提升 10 倍? - V2EX #笔记#更好的 ts 重载声明方法 - V2EX 使用 satisfies 实现穷举类型保护 - V2EX 请教一个 TS 问题,不知能否实现 - V2EX 装饰器能不能装饰类的所有方法 - V2EX TypeSciprt 类型推断,如何进一步收窄类型? - V2EX TypeScript 项目打包发布到 npm,如何给方法和接口添加 dts TypeScript 类型推导真强大。 - V2EX 为啥下面这段代码 TS 不报错 - V2EX ts 类型约束+请求参数校验+自动生成 openapi/swagger 文档,这三者目前有整合为一体的最佳实践吗 - V2EX TypeScript 能不能别这么古怪,这行为什么会报错呢? - V2EX 怎么每次碰到想不通的代码行都出在 TypeScript😢 这行到底哪里有问题? - V2EX 低估了 typescript 的难度 - V2EX 前端写 nestjs 后端,用 TypeORM 时感到非常困惑,不知道是不是我的理解有问题 - V2EX 我列举了市面上最好的几个 TypeScript 教程, 想深入学习 TypeScript 的同学以后不用走弯路了 - V2EX 这样的函数类型定义在 ts 里面叫什么? - V2EX typescript 如何忽略泛型参数啊? - V2EX TypeScript 现在的应用场景 - V2EX ==TypeScript 写的 npm 包可以用 javascript 使用包的函数吗 - V2EX react 如何优雅的实现批量删除+二次确认 - V2EX TypeScript 怎么 wrap 一个函数并修改一下返回值? - V2EX 想请教个 TypeScript 抽象类继承父类的问题。 - V2EX vscode 纯 js 项目有类型推断和成员变量提示,但是如果 ts 混用的话, js 导入就全变成 any 了,请问有办法解决吗 这个项目这样定义 Typescript 类型和使用,学到了,有几个问题? - V2EX 请教一个 Typescript 的问题 - V2EX 这种的类型是不是实现不了(TypeScript) - V2EX 问题一个 typescript 类型包裹问题 - V2EX 遇到了极其诡异的不符合进入 if 条件的要求但是还是进入了 - V2EX typescript 的类型处理 - V2EX 想问问大家 TypeScript 中关于 null 处理的方式 - V2EX 有没有声明 typescript 类型的好办法以及前端样式的健壮性问题 - V2EX typescript 类型断言问题 - V2EX TypeScript 中类型编程简介 - V2EX [求助] 类型 { K:V } --> { "type": K , "conf": V } 且约束 - V2EX 大佬们, vscode 开发 ts,这个地方的提示,怎么修改成中文啊 - V2EX TypeScript 中「类型定义的命名空间」使用 - V2EX 有没有办法把 ts 的 error 报错改成 warning - V2EX [求助] 函数中使用泛型缩小参数类型 - V2EX
TypeScript5.9,仿佛走出草原来到了现代社会 - V2EX
Ketteiron · 2025-09-16 · via TypeScript

TypeScript5.9 刚出就关注了,令我惊喜的是这三个变化:可扩展悬停+悬停最大长度配置+缓存实例

不过当时在 vscode 上摸了半天没法开启,而且 eslint 当时暂时还不支持 5.9 ,于是就回退 5.8 。

今天有时间尝试了一下,vscode 版本大于 1.103 且 TypeScript 版本大于 5.9 ,默认开启可扩展悬停,之前用过实验性配置的可以删掉这个无用配置了 "typescript.experimental.expandableHover": true

需要注意的是部分插件会阻止这个功能,vue/svelte/astro 等插件要么升到最新版要么禁用

假设有这么一个函数,指定了三个参数

function test1(option: { a: string; b: number; c: boolean }) {
  console.log(option)
}

悬浮在函数名上,得到的是

function test1(option: {
    a: string;
    b: number;
    c: boolean;
}): void

如果这个参数类型需要在其他地方使用,只能把内联类型转成接口或者类型别名

type Option = { a: string; b: number; c: boolean }

function test2(option: Option) {
  console.log(option)
}

此时预览结果变成了这样

function test2(option: Option): void

想要看类型?

  1. 请滚到定义的地方自己去看。
  2. Alt + F12 速览定义

都非常不方便,而且类型如果经过多次封装,人工去展开类型简直是地狱般的体验。

而 5.9 的可扩展悬停就是还原了内联类型预览,不需要跑到类型定义查看里面到底有啥类型,原地就能展开。虽然有些类型我试了下并不能展开,但相比原来的四处横跳体验好了几百倍。

另外也增加了悬停长度配置项,原本出于性能考虑,typescript 给的默认值是 160 ,这导致了类型只要稍大一点悬浮框就会截断或者省略内容,并且无法调整,5.9 将这个值设置成 500 ,但我建议在 vscode 中配置更大的值以便完全展开大型复杂类型。

"js/ts.hover.maximumLength": 1000 // 个人建议至少 1000 ,我自己设置了 5000

对关注类型安全的 TypeScript 开发人员来说,zod 等类型校验框架是必不可少的,它解决了统一运行时与编译时类型的难题,将运行时检查与静态类型统一为单一可信源,可以通过校验行为生成安全的入参类型,再配合 tRPC 等远程调用,编写接口实现的本身就是在严格定义其入参与返回类型,前端只需调用接口并通过泛型复用入参与返回值类型,不需要额外定义类型却能整个链路都受到类型的制约,实现了真正有实际意义的类型安全,实现了类型即文档。但这类框架带给 typescript 的性能负担是毁灭性的,这是当前 TypeScript 项目面临的最大挑战,zod+tRPC 等框架不仅带来了类型安全,还带来了指数增长的类型实例化开销。

以我当前维护的 honojs 全栈项目举例,使用 zod+hono 自带的 RPC ,接口数量在 100 个左右,后端代码随便一改 tsserver 就得暂停 10 秒,这意味着 10 秒内我失去了代码补全、签名帮助、错误检查、悬停提示、智能补全等等 typescript 带来的益处,退化成 js 原始人,编写大型 ts 项目的人应该会深有体会。

为什么这么慢?因为 RPC 是导出整个路由类型,每个接口都有由 zod 生成的实例参数类型与 return 的返回类型,所有接口全部链接在一起,组成一个巨大无比的类型交给前端项目使用。

可惜 z.infer 实在太慢了,每一次简单的代码改动,无数个 zod 类型都要全部重新推断一遍,导致 RPC+zod 项目到了一定规模每个开发人员会被迫自动学会时间暂停。

到了这时候,就需要考虑不再由 tsserver 去实时推断类型,而是先编译后端项目,前端仅使用静态类型,但编译很难做到无痛无感,总归会对开发有影响。

typescript5.9 的 Cache Instantiations on Mappers 很大程度缓解了这个难题,以我当前项目来说,the world 从十秒变成两秒,完全能接受,切换成 ts-go 更快,可惜不稳定。

TypeScript 很好,而且在越变越好。