Now vibe coding, so learning hammer FE ?
《TanStack Start 心智模型:给 Next.js 开发者的迁移指南》
标签:#前端 #TanStack_Start #Next.js #React_Router #TypeScript #全栈框架
总结:
文章从一位资深 Next.js 开发者的视角,系统对比了 TanStack Start 与 Next.js App Router 的核心差异。核心心智模型翻转在于:Next.js 默认服务端优先、隐式约定驱动;TanStack Start 默认同构 React、显式声明边界。作者逐一对比了路由类型系统、数据获取、服务端函数、缓存策略、渲染模式、认证防护等关键维度,指出 TanStack Start 更适合高交互 SaaS 类应用,而 Next.js 在内容型站点和成熟生态上仍有优势。
文章要点:
1. 心智模型大翻转:Next.js 默认组件跑在服务端,需要显式标注
2. 路由类型系统碾压:Next.js 的文件路由是约定驱动,TypeScript 对参数无能为力;TanStack Router 会在构建时自动生成完全类型化的路由树,路径参数、搜索参数、loader 返回值全部类型推断,拼写错误直接编译报错
3. 数据获取的"陷阱":Next.js 的 Server Component 只在服务端执行,天然安全;TanStack Start 的 loader 是同构的——SSR 时跑在服务端,客户端导航时跑在浏览器里,所以直接写数据库查询会泄露环境变量,必须用
4. 缓存哲学更简单:Next.js 历史上有复杂的四层缓存模型,v16 改为
5. 认证防护双层设计:
6. Remix 与 RSC 现状:TanStack Start 的 RSC 支持仍处于实验阶段,实现方式也与 Next.js 不同(更像客户端获取 Flight payload 后组装),如果生产环境重度依赖 RSC,Next.js 目前更成熟
7. 选型建议:内容型/营销站点选 Next.js;高交互 SaaS 后台、需要强类型安全、讨厌隐式缓存魔法的团队,TanStack Start 值得认真评估
URL:
https://www.adarsha.dev/blog/tanstack-mental-model-for-nextjs-developers
标签:#前端 #TanStack_Start #Next.js #React_Router #TypeScript #全栈框架
总结:
文章从一位资深 Next.js 开发者的视角,系统对比了 TanStack Start 与 Next.js App Router 的核心差异。核心心智模型翻转在于:Next.js 默认服务端优先、隐式约定驱动;TanStack Start 默认同构 React、显式声明边界。作者逐一对比了路由类型系统、数据获取、服务端函数、缓存策略、渲染模式、认证防护等关键维度,指出 TanStack Start 更适合高交互 SaaS 类应用,而 Next.js 在内容型站点和成熟生态上仍有优势。
文章要点:
1. 心智模型大翻转:Next.js 默认组件跑在服务端,需要显式标注
"use client" 才能上客户端;TanStack Start 默认组件同构(服务端+客户端都能跑),只有需要纯服务端逻辑时才用 createServerFn 显式声明,边界更清晰,不容易踩坑2. 路由类型系统碾压:Next.js 的文件路由是约定驱动,TypeScript 对参数无能为力;TanStack Router 会在构建时自动生成完全类型化的路由树,路径参数、搜索参数、loader 返回值全部类型推断,拼写错误直接编译报错
3. 数据获取的"陷阱":Next.js 的 Server Component 只在服务端执行,天然安全;TanStack Start 的 loader 是同构的——SSR 时跑在服务端,客户端导航时跑在浏览器里,所以直接写数据库查询会泄露环境变量,必须用
createServerFn 包裹4. 缓存哲学更简单:Next.js 历史上有复杂的四层缓存模型,v16 改为
'use cache' 显式 opt-in;TanStack Start 只有路由 loader 缓存 + 可选的 TanStack Query,没有隐式魔法,哪里缓存、哪里失效一目了然5. 认证防护双层设计:
beforeLoad 负责 UI 层面的重定向(用户体验),createServerFn 中间件负责数据层面的安全校验(真正的安全边界),两层职责分离,比 Next.js 把 edge middleware 和 action 内校验混在一起的方案更不容易遗漏6. Remix 与 RSC 现状:TanStack Start 的 RSC 支持仍处于实验阶段,实现方式也与 Next.js 不同(更像客户端获取 Flight payload 后组装),如果生产环境重度依赖 RSC,Next.js 目前更成熟
7. 选型建议:内容型/营销站点选 Next.js;高交互 SaaS 后台、需要强类型安全、讨厌隐式缓存魔法的团队,TanStack Start 值得认真评估
URL:
https://www.adarsha.dev/blog/tanstack-mental-model-for-nextjs-developers
《TypeScript类型变量推断机制深度解析》
标签:#TypeScript #类型系统 #类型推断 #泛型
总结:
本文系统拆解了TypeScript函数调用时类型变量推断的完整算法流程,涵盖候选收集与候选解析两大阶段,深入分析了协变/逆变候选列表、优先级机制、联合类型分发、交叉类型处理等核心规则,并提供了
文章要点:
1. 推断分两步走:先收集候选(遍历源类型与目标类型配对,遇到裸类型参数就记录),再解析候选(把列表压缩成单一类型)
2. 候选分协变和逆变两拨:协变候选(输出位置)找公共超类型,逆变候选(输入位置)找公共子类型,通常逆变结果优先
3. 联合类型会分发推断:源类型是联合类型时,会对每个分支独立推断,所有候选进同一个列表
4. 交叉类型有"剥离"玄学:比如
5. 条件类型的条件侧不参与推断:
6. 优先级机制会"覆盖"低优先级:ReturnType、LiteralKeyof等高优先级候选到来时,会清空低优先级列表
7. 最烦人场景有解:当类型参数只出现在extends约束中而不在参数类型里时,可用提取器类型(如
URL:https://norswap.com/typescript-type-variable-inference/
标签:#TypeScript #类型系统 #类型推断 #泛型
总结:
本文系统拆解了TypeScript函数调用时类型变量推断的完整算法流程,涵盖候选收集与候选解析两大阶段,深入分析了协变/逆变候选列表、优先级机制、联合类型分发、交叉类型处理等核心规则,并提供了
NoInfer<T>控制推断、提取器类型解决"最烦人场景"等实用技巧,帮助开发者理解并调试那些"看似疯狂"的类型推断行为。文章要点:
1. 推断分两步走:先收集候选(遍历源类型与目标类型配对,遇到裸类型参数就记录),再解析候选(把列表压缩成单一类型)
2. 候选分协变和逆变两拨:协变候选(输出位置)找公共超类型,逆变候选(输入位置)找公共子类型,通常逆变结果优先
3. 联合类型会分发推断:源类型是联合类型时,会对每个分支独立推断,所有候选进同一个列表
4. 交叉类型有"剥离"玄学:比如
A & {x: number}可能让A捕获整个对象,而A & "a"可能只剥离出品牌属性,这是TS的启发式策略5. 条件类型的条件侧不参与推断:
T extends Foo不会把Foo作为T的候选,infer引入的新变量才会被收集6. 优先级机制会"覆盖"低优先级:ReturnType、LiteralKeyof等高优先级候选到来时,会清空低优先级列表
7. 最烦人场景有解:当类型参数只出现在extends约束中而不在参数类型里时,可用提取器类型(如
GetV<T>)或交叉参数类型(T & Map<K,V>)来辅助推断,但两者在联合类型支持上有取舍URL:https://norswap.com/typescript-type-variable-inference/
《TypeScript 每个人都该知道的实用技巧》
标签:#TypeScript #前端开发 #代码质量
总结:
这是一份精心整理的 TypeScript 实战模式合集,涵盖 15 个核心技巧,从基础类型安全到高级类型体操,帮助开发者写出更安全、更可维护、更愉悦的代码。每条建议都配有简洁示例,强调"类型安全不等于运行时安全"这一关键认知,适合各阶段 TS 开发者查漏补缺。
文章要点:
1. 用
2. 让类型推断为你工作:减少不必要的显式注解,避免类型拓宽和维护负担,代码更简洁
3. 用
4. 从值推导类型:用
5. 用可辨识联合建模不可能状态:用
6. 用
7. 配置和常量用
8. 用类型谓语做可复用的收窄:把运行时检查写成
9. 从现有类型构建新类型:掌握
10. 运行时校验外部数据:TypeScript 不验证 API 响应,配合 Zod 等库在边界做运行时校验
11. 多数场景避免
12. 优先使用可推断的泛型:好的 API 设计让用户无需手动传泛型参数,靠上下文自动推断
13. 开启严格编译选项:
14. 学习模板字面量类型:用 ``
15. 类型安全 ≠ 运行时安全:TS 提升正确性,但不替代校验、不保证架构、不消除运行时错误
URL:https://github.com/AllThingsSmitty/typescript-tips-everyone-should-know
标签:#TypeScript #前端开发 #代码质量
总结:
这是一份精心整理的 TypeScript 实战模式合集,涵盖 15 个核心技巧,从基础类型安全到高级类型体操,帮助开发者写出更安全、更可维护、更愉悦的代码。每条建议都配有简洁示例,强调"类型安全不等于运行时安全"这一关键认知,适合各阶段 TS 开发者查漏补缺。
文章要点:
1. 用
unknown 替代 any:强制做类型校验,守住类型安全的第一道防线,防止类型泄漏2. 让类型推断为你工作:减少不必要的显式注解,避免类型拓宽和维护负担,代码更简洁
3. 用
satisfies 代替 as:既验证类型兼容性,又保留具体推断,比强制断言更安全4. 从值推导类型:用
as const + typeof 让运行时和编译时保持同步,告别手动维护两份定义5. 用可辨识联合建模不可能状态:用
status 标签区分状态,比松散的可选属性对象更可靠、更易扩展6. 用
never 做穷尽检查:在 switch 的 default 分支里赋值 never,让未来漏改直接变成编译错误7. 配置和常量用
as const:把对象属性收窄为字面量类型,比如 "dark" 而不是宽泛的 string8. 用类型谓语做可复用的收窄:把运行时检查写成
value is User 形式,让编译器理解你的守卫逻辑9. 从现有类型构建新类型:掌握
Pick、Omit、Partial 等工具类型,用变换思维代替重复定义10. 运行时校验外部数据:TypeScript 不验证 API 响应,配合 Zod 等库在边界做运行时校验
11. 多数场景避免
enum:字面量联合类型通常更易重构、更易序列化、运行时行为更可控12. 优先使用可推断的泛型:好的 API 设计让用户无需手动传泛型参数,靠上下文自动推断
13. 开启严格编译选项:
strict、noUncheckedIndexedAccess 等标志是 TS 真正发挥价值的地方14. 学习模板字面量类型:用 ``
/api/${string} `` 这类模式约束路由、事件名、CSS 工具类等字符串15. 类型安全 ≠ 运行时安全:TS 提升正确性,但不替代校验、不保证架构、不消除运行时错误
URL:https://github.com/AllThingsSmitty/typescript-tips-everyone-should-know
《Orval:从OpenAPI规范自动生成类型安全客户端代码》
标签:#前端 #全栈 #OpenAPI #TypeScript #CodeGeneration #ReactQuery #Swagger #APIClient
总结:
Orval 是一个代码生成工具,能读取 OpenAPI v3 或 Swagger v2 规范(支持 yaml 和 json 格式),自动生成带完整 TypeScript 类型签名的客户端代码。它支持 React Query、SWR、Vue Query、Svelte Query、Solid Query、Angular、Hono、Zod、原生 fetch 和 MCP 等多种框架与库,同时还能生成模型、请求函数、Hooks 和 Mock 数据。项目提供在线 Playground 快速体验,开发时使用 Bun 构建,社区活跃且有赞助支持。
文章要点:
1. Orval 的核心能力是从 OpenAPI / Swagger 文档一键生成类型安全的 TS 客户端,告别手写接口代码的繁琐工作
2. 生态支持非常全面,覆盖了 React、Vue、Svelte、Solid、Angular 等主流前端框架,还有 React Query、SWR 等数据获取方案
3. 不只是生成请求函数,还能顺带产出数据模型(Models)、React Hooks、以及用于测试的 Mock 数据,一条龙服务
4. 项目内置了在线 Playground,不用安装就能上手体验,对新手和想快速验证的同学很友好
5. 开发侧使用 Bun 作为包管理工具,测试流程完善,包含单元测试、快照测试和 CLI 验证
URL:https://github.com/orval-labs/orval
标签:#前端 #全栈 #OpenAPI #TypeScript #CodeGeneration #ReactQuery #Swagger #APIClient
总结:
Orval 是一个代码生成工具,能读取 OpenAPI v3 或 Swagger v2 规范(支持 yaml 和 json 格式),自动生成带完整 TypeScript 类型签名的客户端代码。它支持 React Query、SWR、Vue Query、Svelte Query、Solid Query、Angular、Hono、Zod、原生 fetch 和 MCP 等多种框架与库,同时还能生成模型、请求函数、Hooks 和 Mock 数据。项目提供在线 Playground 快速体验,开发时使用 Bun 构建,社区活跃且有赞助支持。
文章要点:
1. Orval 的核心能力是从 OpenAPI / Swagger 文档一键生成类型安全的 TS 客户端,告别手写接口代码的繁琐工作
2. 生态支持非常全面,覆盖了 React、Vue、Svelte、Solid、Angular 等主流前端框架,还有 React Query、SWR 等数据获取方案
3. 不只是生成请求函数,还能顺带产出数据模型(Models)、React Hooks、以及用于测试的 Mock 数据,一条龙服务
4. 项目内置了在线 Playground,不用安装就能上手体验,对新手和想快速验证的同学很友好
5. 开发侧使用 Bun 作为包管理工具,测试流程完善,包含单元测试、快照测试和 CLI 验证
URL:https://github.com/orval-labs/orval
《Mirage:AI Agent的统一虚拟文件系统》
标签:#AI_Tools #AI_Agent #文件系统 #Python #TypeScript #SDK #S3 #Slack #GitHub #Redis #缓存 #OpenAI #Vercel_AI_SDK #LangChain
总结:
Mirage 是一个专为 AI Agent 设计的统一虚拟文件系统,它将 S3、Google Drive、Slack、Gmail、Redis 等数十种后端服务挂载到同一棵文件树下。Agent 只需用熟悉的 Unix/bash 工具(如 grep、cat、cp)就能跨服务读写数据,无需学习 N 个 SDK 或 MCP。支持 Python/TypeScript SDK 和 CLI,可嵌入 FastAPI、Express 等应用,并内置双层缓存(索引缓存 + 文件缓存)减少网络开销,兼容 OpenAI Agents SDK、Vercel AI SDK、LangChain 等主流框架。
文章要点:
- 统一挂载,万物皆文件:把 S3、GDrive、Slack、GitHub、MongoDB、Redis 等后端并排挂载到同一个根目录下,Agent 看到的始终只有一棵树
- 零学习成本:任何懂 bash 的 LLM 都能直接上手,用
- 双层缓存省流量:自带索引缓存(目录列表)和文件缓存(对象字节),默认用内存,也可切 Redis 共享给多进程/多机器
- 多语言 SDK + CLI:提供 Python 和 TypeScript(Node / Browser / Core)SDK,以及轻量 CLI,可嵌入你的 FastAPI、Express 或浏览器应用
- 主流框架即插即用:已适配 OpenAI Agents SDK、Vercel AI SDK、LangChain、Pydantic AI、CAMEL、OpenHands 等
- 工作空间可移植:支持克隆、快照、版本化管理,Agent 运行环境能在机器间迁移而不必重新配置
文章URL:https://github.com/strukto-ai/mirage
标签:#AI_Tools #AI_Agent #文件系统 #Python #TypeScript #SDK #S3 #Slack #GitHub #Redis #缓存 #OpenAI #Vercel_AI_SDK #LangChain
总结:
Mirage 是一个专为 AI Agent 设计的统一虚拟文件系统,它将 S3、Google Drive、Slack、Gmail、Redis 等数十种后端服务挂载到同一棵文件树下。Agent 只需用熟悉的 Unix/bash 工具(如 grep、cat、cp)就能跨服务读写数据,无需学习 N 个 SDK 或 MCP。支持 Python/TypeScript SDK 和 CLI,可嵌入 FastAPI、Express 等应用,并内置双层缓存(索引缓存 + 文件缓存)减少网络开销,兼容 OpenAI Agents SDK、Vercel AI SDK、LangChain 等主流框架。
文章要点:
- 统一挂载,万物皆文件:把 S3、GDrive、Slack、GitHub、MongoDB、Redis 等后端并排挂载到同一个根目录下,Agent 看到的始终只有一棵树
- 零学习成本:任何懂 bash 的 LLM 都能直接上手,用
grep、cat、cp、wc 这些经典命令跨服务操作,不用记新 API- 双层缓存省流量:自带索引缓存(目录列表)和文件缓存(对象字节),默认用内存,也可切 Redis 共享给多进程/多机器
- 多语言 SDK + CLI:提供 Python 和 TypeScript(Node / Browser / Core)SDK,以及轻量 CLI,可嵌入你的 FastAPI、Express 或浏览器应用
- 主流框架即插即用:已适配 OpenAI Agents SDK、Vercel AI SDK、LangChain、Pydantic AI、CAMEL、OpenHands 等
- 工作空间可移植:支持克隆、快照、版本化管理,Agent 运行环境能在机器间迁移而不必重新配置
文章URL:https://github.com/strukto-ai/mirage
《Optique:TypeScript 类型安全的 CLI 解析器》
标签:#CLI #TypeScript #ShellCompletion #ParserCombinator #NodeJS #Deno #Bun
总结:
Optique 是一款面向 TypeScript 的类型安全 CLI 解析器库,灵感源自 Haskell 的 optparse-applicative 与 TypeScript 的 Zod。它采用函数式组合子(combinator)架构,通过组合小型类型安全解析器构建复杂 CLI,TypeScript 自动推断解析结果类型。支持标志、选项、子命令、选项间依赖、环境变量绑定、交互式提示、配置文件集成、Shell 补全及 man 手册生成,并可在 Deno、Node.js 与 Bun 上运行。1.0.0 版本新增
文章要点:
- 类型安全组合子架构:用函数式组合子拼装小型解析器,TypeScript 自动推断解析结果类型,编译时保证安全,解析器结构本身即运行时校验规则 。
- 零重复定义的智能 Shell 补全:支持 Bash、zsh、fish、PowerShell、Nushell 五大 Shell,补全逻辑直接复用解析器结构,无需额外维护补全定义,选项、参数与
- 灵活的集成扩展:提供
- 1.0 正式版成熟稳定:2026 年 4 月发布的 1.0.0 完成 API 清理,新增
文章URL:https://optique.dev/
标签:#CLI #TypeScript #ShellCompletion #ParserCombinator #NodeJS #Deno #Bun
总结:
Optique 是一款面向 TypeScript 的类型安全 CLI 解析器库,灵感源自 Haskell 的 optparse-applicative 与 TypeScript 的 Zod。它采用函数式组合子(combinator)架构,通过组合小型类型安全解析器构建复杂 CLI,TypeScript 自动推断解析结果类型。支持标志、选项、子命令、选项间依赖、环境变量绑定、交互式提示、配置文件集成、Shell 补全及 man 手册生成,并可在 Deno、Node.js 与 Bun 上运行。1.0.0 版本新增
@optique/env 环境变量包与 @optique/prompt 交互式提示包,同时修复了 Shell 补全、帮助输出与值解析中的数百项问题 。文章要点:
- 类型安全组合子架构:用函数式组合子拼装小型解析器,TypeScript 自动推断解析结果类型,编译时保证安全,解析器结构本身即运行时校验规则 。
- 零重复定义的智能 Shell 补全:支持 Bash、zsh、fish、PowerShell、Nushell 五大 Shell,补全逻辑直接复用解析器结构,无需额外维护补全定义,选项、参数与
choice() 值自动同步 。- 灵活的集成扩展:提供
@optique/env 环境变量回退、@optique/config 配置文件级联、@optique/prompt 交互式提示、@optique/zod 与 @optique/valibot 桥接,以及 @optique/temporal 日期时间解析等生态包 。- 1.0 正式版成熟稳定:2026 年 4 月发布的 1.0.0 完成 API 清理,新增
fail<T>() 解析器、validateValue() 校验、normalize() 规范化与细粒度 hidden 控制,并修复了数百项补全、帮助与解析问题 。文章URL:https://optique.dev/
《2026年JavaScript生态全景指南》
标签:#前端 #JavaScript #ECMAScript2025 #ECMAScript2026 #React #Vue #Svelte #NodeJS #TypeScript #Vite #Bun #Deno #TemporalAPI #IteratorHelpers #ImportAttributes
总结:
本文全面梳理了2026年JavaScript生态系统的最新发展,涵盖ECMAScript 2025(迭代器助手、Set方法、Promise.try等)和2026预期特性(Temporal API、资源管理),React/Vue/Svelte框架动态,Node.js原生TypeScript支持、Bun和Deno运行时竞争,Vite 8与Turbopack构建工具演进,TypeScript v6及AI编程趋势。文章强调掌握基础原理比追逐工具更重要,特别是在AI辅助编程时代,架构能力和代码品味尤为关键。
文章要点:
- **ECMAScript 2025超实用新玩具**:迭代器终于能链式调用`.map()
- **2026年最期待的Temporal API**:Date对象终于被拯救了!处理时区和日期计算不会再莫名其妙多出几天,浏览器原生支持即将到来,告别 moment.js 大礼包的时代要来啦~
- **框架圈的大新闻**:React 19的Server Components和Compiler还在消化中,Vue 3.6祭出Vapor Mode性能大招,Svelte 5的Runes API让响应式更细粒度; Next.js 16默认切到Turbopack,Astro被Cloudflare抱走,Remix正在酝酿去React化的大胆实验~
- **运行时三国杀**:Node.js 22+能直接跑.ts文件啦(虽然只是剥离类型),Bun被Anthropic(Claude家)收编后1.3版本速速飞起,Deno 2稳如老狗主打安全牌,三足鼎立格局越来越有意思~
- **TypeScript登顶GitHub第一**:v6严格模式默认开启,v7要用Go重写编译器提速10倍;92%的开发者都在用AI写代码,但文章提醒我们——基础原理和架构品味才是AI时代真正的护城河呀!
文章URL:https://frontendmasters.com/blog/what-to-know-in-javascript-2026-edition/
标签:#前端 #JavaScript #ECMAScript2025 #ECMAScript2026 #React #Vue #Svelte #NodeJS #TypeScript #Vite #Bun #Deno #TemporalAPI #IteratorHelpers #ImportAttributes
总结:
本文全面梳理了2026年JavaScript生态系统的最新发展,涵盖ECMAScript 2025(迭代器助手、Set方法、Promise.try等)和2026预期特性(Temporal API、资源管理),React/Vue/Svelte框架动态,Node.js原生TypeScript支持、Bun和Deno运行时竞争,Vite 8与Turbopack构建工具演进,TypeScript v6及AI编程趋势。文章强调掌握基础原理比追逐工具更重要,特别是在AI辅助编程时代,架构能力和代码品味尤为关键。
文章要点:
- **ECMAScript 2025超实用新玩具**:迭代器终于能链式调用`.map()
和.filter()`啦,而且是惰性求值不耗内存;Set之间可以玩集合运算,轻松找出技能交集和差集;`Promise.try()`让同步异步错误一网打尽;还有`RegExp.escape()`终于解决了用户搜索时特殊字符炸正则的问题~- **2026年最期待的Temporal API**:Date对象终于被拯救了!处理时区和日期计算不会再莫名其妙多出几天,浏览器原生支持即将到来,告别 moment.js 大礼包的时代要来啦~
- **框架圈的大新闻**:React 19的Server Components和Compiler还在消化中,Vue 3.6祭出Vapor Mode性能大招,Svelte 5的Runes API让响应式更细粒度; Next.js 16默认切到Turbopack,Astro被Cloudflare抱走,Remix正在酝酿去React化的大胆实验~
- **运行时三国杀**:Node.js 22+能直接跑.ts文件啦(虽然只是剥离类型),Bun被Anthropic(Claude家)收编后1.3版本速速飞起,Deno 2稳如老狗主打安全牌,三足鼎立格局越来越有意思~
- **TypeScript登顶GitHub第一**:v6严格模式默认开启,v7要用Go重写编译器提速10倍;92%的开发者都在用AI写代码,但文章提醒我们——基础原理和架构品味才是AI时代真正的护城河呀!
文章URL:https://frontendmasters.com/blog/what-to-know-in-javascript-2026-edition/
《TypeScript 6.0 正式发布:迈向原生编译器的重要桥梁》
标签:#前端 #TypeScript #TS6 #TS7 #ESM #NodeJS #Compiler
总结:
TypeScript 6.0 是连接 5.9 与即将发布的 Go 语言重写版 7.0 的关键过渡版本,也是基于当前 JavaScript 代码库的最后一个主要版本。本次更新带来多项实用新特性,包括更智能的无
文章要点:
- 过渡版本定位**:TS 6.0 是基于 JS 代码库的最后一个版本,TS 7.0(Go 重写版)已接近完成,6.0 的改动主要为 7.0 铺路
- **类型推断更聪明**:不再把未使用 `this` 的方法语法函数视为上下文敏感函数,让属性顺序不影响类型推导,写代码更随心所欲
- **子路径导入更简洁**:终于支持 `#/*` 这种干净的别名写法,告别之前必须写 `#root/*` 的冗余,和打包工具里的 `@/` 习惯更接近了
- **全新内置类型**:Temporal API 正式入驻(处理日期时间更靠谱),Map 新增 `getOrInsert` 和 `getOrInsertComputed` 方法,告别繁琐的"有则取无则设"模式
- **配置默认值现代化**:`strict` 默认开启,`module` 默认 `esnext`,`target` 默认当前年份(es2025),新项目开箱即用更严格、更现代
- **性能优化相关**:`types` 默认改为空数组(需显式声明如 `["node"]`),`libReplacement` 默认关闭,构建速度有望提升 20-50%
- **大量废弃项需留意**:`target: es5`、`baseUrl`、`moduleResolution node`、AMD/UMD/SystemJS 模块、`outFile`、`module` 关键字声明命名空间等都将退出历史舞台,建议尽早迁移
- **迁移辅助工具**:提供 `--stableTypeOrdering` 标志帮助对比 6.0 与 7.0 的差异,`ts5to6` 工具可自动调整 `baseUrl` 和 `rootDir` 配置
**文章URL:
https://devblogs.microsoft.com/typescript/announcing-typescript-6-0/
标签:#前端 #TypeScript #TS6 #TS7 #ESM #NodeJS #Compiler
总结:
TypeScript 6.0 是连接 5.9 与即将发布的 Go 语言重写版 7.0 的关键过渡版本,也是基于当前 JavaScript 代码库的最后一个主要版本。本次更新带来多项实用新特性,包括更智能的无
this 函数类型推断、支持 #/ 开头的子路径导入、内置 Temporal API 类型、Map 的 getOrInsert 方法等。同时,大量旧配置项被标记为废弃(如 target: es5`、`baseUrl`、AMD/UMD 模块等),`strict 和 module 等选项的默认值也更现代化。这些调整旨在帮助开发者提前适配 TypeScript 7.0 的全新架构。文章要点:
- 过渡版本定位**:TS 6.0 是基于 JS 代码库的最后一个版本,TS 7.0(Go 重写版)已接近完成,6.0 的改动主要为 7.0 铺路
- **类型推断更聪明**:不再把未使用 `this` 的方法语法函数视为上下文敏感函数,让属性顺序不影响类型推导,写代码更随心所欲
- **子路径导入更简洁**:终于支持 `#/*` 这种干净的别名写法,告别之前必须写 `#root/*` 的冗余,和打包工具里的 `@/` 习惯更接近了
- **全新内置类型**:Temporal API 正式入驻(处理日期时间更靠谱),Map 新增 `getOrInsert` 和 `getOrInsertComputed` 方法,告别繁琐的"有则取无则设"模式
- **配置默认值现代化**:`strict` 默认开启,`module` 默认 `esnext`,`target` 默认当前年份(es2025),新项目开箱即用更严格、更现代
- **性能优化相关**:`types` 默认改为空数组(需显式声明如 `["node"]`),`libReplacement` 默认关闭,构建速度有望提升 20-50%
- **大量废弃项需留意**:`target: es5`、`baseUrl`、`moduleResolution node`、AMD/UMD/SystemJS 模块、`outFile`、`module` 关键字声明命名空间等都将退出历史舞台,建议尽早迁移
- **迁移辅助工具**:提供 `--stableTypeOrdering` 标志帮助对比 6.0 与 7.0 的差异,`ts5to6` 工具可自动调整 `baseUrl` 和 `rootDir` 配置
**文章URL:
https://devblogs.microsoft.com/typescript/announcing-typescript-6-0/
《人生苦短,何必手写 API 类型:OpenAPI 驱动的 React 开发》
标签:#前端 #React #OpenAPI #TypeScript #Hey_API #MSW #Nanoquery #Contract_First
总结
本文是 Evil Martians 团队"契约优先"系列第三篇,介绍如何通过 OpenAPI 规范驱动 React 前端开发。核心思路是将 OpenAPI Spec 作为单一事实来源,利用 Hey API 自动生成 TypeScript 类型、SDK 客户端和 Zod 验证模式,配合 Nanostores 与 Nanoquery 实现类型安全的状态管理,并使用 MSW 在浏览器层面拦截网络请求进行模拟,实现前后端并行开发。当后端契约变更时,重新生成代码即可让 TypeScript 立即暴露所有需要更新的地方,避免生产环境出现类型不匹配错误。
文章要点:
- **手写 API 类型的痛点**:类型与后端脱节、缺乏运行时验证、重复样板代码、错误只能在生产环境发现
- **Hey API 自动生成**:通过
- **Nanostores + Nanoquery 状态管理**:将 API 数据视为全局状态存储在组件外,支持缓存、自动重取、跨组件共享,避免传统 Hooks 的数据获取陷阱
- **MSW 网络层模拟**:在浏览器层面拦截真实 HTTP 请求返回模拟数据,支持随机延迟、分页、过滤、错误场景,实现不依赖后端的功能开发
- **完整实战示例**:包含酒店管理系统代码,展示表单验证、CRUD 操作、路由集成、环境配置切换等完整开发流程
- **契约优先工作流**:后端更新 Spec → 前端重新生成 → TypeScript 报错定位 → 修复代码,确保集成一次成功
文章URL:https://evilmartians.com/chronicles/lifes-too-short-to-hand-write-api-types-openapi-driven-react
标签:#前端 #React #OpenAPI #TypeScript #Hey_API #MSW #Nanoquery #Contract_First
总结
本文是 Evil Martians 团队"契约优先"系列第三篇,介绍如何通过 OpenAPI 规范驱动 React 前端开发。核心思路是将 OpenAPI Spec 作为单一事实来源,利用 Hey API 自动生成 TypeScript 类型、SDK 客户端和 Zod 验证模式,配合 Nanostores 与 Nanoquery 实现类型安全的状态管理,并使用 MSW 在浏览器层面拦截网络请求进行模拟,实现前后端并行开发。当后端契约变更时,重新生成代码即可让 TypeScript 立即暴露所有需要更新的地方,避免生产环境出现类型不匹配错误。
文章要点:
- **手写 API 类型的痛点**:类型与后端脱节、缺乏运行时验证、重复样板代码、错误只能在生产环境发现
- **Hey API 自动生成**:通过
openapi-ts 从 OpenAPI Spec 生成 TypeScript 类型、SDK 函数、Zod 验证模式和客户端配置,实现编译时与运行时双重安全- **Nanostores + Nanoquery 状态管理**:将 API 数据视为全局状态存储在组件外,支持缓存、自动重取、跨组件共享,避免传统 Hooks 的数据获取陷阱
- **MSW 网络层模拟**:在浏览器层面拦截真实 HTTP 请求返回模拟数据,支持随机延迟、分页、过滤、错误场景,实现不依赖后端的功能开发
- **完整实战示例**:包含酒店管理系统代码,展示表单验证、CRUD 操作、路由集成、环境配置切换等完整开发流程
- **契约优先工作流**:后端更新 Spec → 前端重新生成 → TypeScript 报错定位 → 修复代码,确保集成一次成功
文章URL:https://evilmartians.com/chronicles/lifes-too-short-to-hand-write-api-types-openapi-driven-react
TypeScript 泛型趣味实践
标签:#TypeScript #泛型 #函数重载 #TanStack #条件类型
文章深入探讨了如何利用 TypeScript 泛型、条件类型和函数重载,为 TanStack Start 的 Server Function 构建一个完全类型安全的查询选项封装函数。通过一个真实的场景——确保带参数和不带参数的 Server Function 都能被正确推断返回类型和参数类型——展示了从基础泛型约束到复杂类型体操的完整实现路径,最终解决了可选参数与类型推断的冲突问题。
文章要点:
- 通过为 TanStack Start 的 Server Function 封装
- 初始方案使用泛型约束
- 利用条件类型
- 通过 TypeScript 函数重载(Overloading)定义两个签名:一个用于带参数的 Server Function,一个用于无参函数,从而精确控制参数的可选性
- 展示了泛型、条件类型与函数重载结合使用的高级技巧,实现编译时严格的类型检查和完美的类型推断
链接:https://frontendmasters.com/blog/fun-with-typescript-generics/
标签:#TypeScript #泛型 #函数重载 #TanStack #条件类型
文章深入探讨了如何利用 TypeScript 泛型、条件类型和函数重载,为 TanStack Start 的 Server Function 构建一个完全类型安全的查询选项封装函数。通过一个真实的场景——确保带参数和不带参数的 Server Function 都能被正确推断返回类型和参数类型——展示了从基础泛型约束到复杂类型体操的完整实现路径,最终解决了可选参数与类型推断的冲突问题。
文章要点:
- 通过为 TanStack Start 的 Server Function 封装
refetchedQueryOptions 工具函数,解决查询数据返回类型为 any 的类型安全问题- 初始方案使用泛型约束
<T extends (arg: { data: any }) => Promise<any>> 提取参数和返回类型,但无法处理无参函数的可选参数场景- 利用条件类型
infer 关键字创建类型工具 ServerFnArgs 来提取函数参数类型,并判断函数是否有参数- 通过 TypeScript 函数重载(Overloading)定义两个签名:一个用于带参数的 Server Function,一个用于无参函数,从而精确控制参数的可选性
- 展示了泛型、条件类型与函数重载结合使用的高级技巧,实现编译时严格的类型检查和完美的类型推断
链接:https://frontendmasters.com/blog/fun-with-typescript-generics/
#React 学习如何使用 React Three Fiber 创建一个简化版的移动游戏《跳跳路》的克隆版。#ReactThreeFiber #Threejs #JavaScript #TypeScript
https://javascriptgametutorials.com/tutorials/react-three-fiber/crossy-road
https://javascriptgametutorials.com/tutorials/react-three-fiber/crossy-road