使用 using 后:离开作用域后会自动释放文件句柄
3)反对 TypeScript 的声音
尽管目前 TypeScript 如日中天,取得了前所未有的成功。然而,在今年 8 月份,Ruby on Rails 的创建者 David Heinemeier Hansson(DHH) 从即将发布的 Turbo 框架第 8 版中删除了 TypeScript,并发文称 “通过添加微不足道的类型技巧,让我的开发体验变得更加糟糕,而且频繁引发很多困扰。本应简单的事情反而变得很困难。”
其实,Turbo 并不是第一个放弃 TypeScript 的前端框架,今年 3 月,Svelte 团队计划将会从目前使用的 TypeScript 迁移到 JSDoc。Svelte 创始人 Rich Harris 曾在推特上说道:Svelte 并没有放弃类型安全,而是改用 JSDoc,以减少包体和代码编译时间,依旧支持使用 tsc 编译器检查类型。
早在 2020 年,Deno 团队已经开始在 Deno 内部代码抛弃 TypeScript,当时 Deno 团队给出的理由如下:
● 在变更文件时, TypeScript 导致连续编译过程变得非常缓慢。
● 在创建 Deno 可执行文件以及面向用户的 API 源文件时,TypeScript 结构会引发一系列运行时性能问题。
● TypeScript 本身对于 Deno 代码的组织工作毫无帮助,反而增强了代码组织负担,具体详见以下的 issue:https://github.com/denoland/deno/issues/4748。
总结而言,他们抛弃 TypeScript 重回 JavaScript 的主要原因如下:
1. 减少代码编译构建时间和代码体积。
2. 减少 TypeScript 元编程所带来的代码组织的负担和所需要编写的代码量。
4)TypeScript 转向 JavaScript 真的是一个好选择吗?
在日常业务开发中,我们通常只会使用类型定义、泛型以及简单的类型推导,并不会使用到所谓的“TypeScript 类型体操“,但是 TypeScript 强类型所带来的类型安全能够大幅度提高项目的代码质量和可维护性。而在类库和框架的开发中,抛弃 TypeScript 转向 JavaScript 的只是少数开发者,目前绝大部分的主流前端开源项目都是在拥抱 TypeScript,这也足以证明社区肯定 TypeScript 所带来的价值。
此外,虽然 TypeScript 原生编译器速度较慢,但是笔者认为这个是可以通过更换 esbuild 或则 swc 等性能更加优异的编译器来解决的。
没有任何一门语言是十全十美的,TypeScript 也毫不例外。笔者认为 TypeScript 的确会引入了一定的复杂度,但是其所提供的类型系统能够大幅度提高项目的健壮性和可维护性,在绝大部分前端开发场景下,都是利大于弊的,能够很好地规避 JavaScript 弱类型带来的大部分陷阱。ECMAScript 2023:持续完善并拓展 JavaScript 语法
回顾完前端语言明日之星 TypeScript,让我们将目光转到 JavaScript 上。今年 6 月 27 日,第 125 届 ECMA 大会正式批准了 ECMAScript 2023 语言规范。总而言之,本次 ECMAScript 2023 并没有新增大的改动点,更多是对 JavaScript 原来语法的完善与增补。而笔者认为其中比较有意义的更新主要有以下两个:
1) WeakMap 支持 Symbol 作为 Key。
总所周知, WeakMap 的 Key 是弱引用,且要求是唯一的值。由 Symbol 具有唯一性,保证不可重建,因此在今年的 ECMAScript 2023 新特性中扩展了 WeakMap API,WeakMaps 允许使用唯一的 Symbol 作为键。不过值得注意的是,通过 Symbol.for 创建的 Symbol 是不可以作为弱引用的,因为 Symbol.for 会在全局注册 Symbol,并支持在任何地方通过 Symbol.for 再次引用。
2) 新增四个通过副本修改数组的方法:toReversed()、toSorted()、toSpliced()、with(),
目前大多数的数组方法都是非破坏性的,当然也存在一些对原数组具有破坏性的方法,例如 reverse()、sort() 以及 splice() 。当我们想要使用这些方法又不想对原数组造成影响的话,通常需要先拷贝一份数组再调用相应的方法,由此可见,这种开发体验不友好的。因此在今年的 ECMAScript 2023 优化了开发体验,新增了相应的非破坏性方法。众望所归的 CSS 嵌套和 CSS 父选择器正式落地
1) 原生 CSS 支持嵌套
CSS 支持嵌套一直是 Sass 中最受开发者喜爱的功能点之一,它允许让开发者在编写样式的时候更加整洁、内聚。据上一年 State of CSS 统计,CSS 嵌套是受访者认为 CSS 最需要补充的功能之一。
(图选自 https://2023.stateofcss.com/zh-Hans/usage/#what_do_you_use_css_for)
而在今年 CSS 2023 新特性中,原生 CSS 正式支持嵌套写法,在高版本浏览器中,无需依赖额外的编译器即可享受 Sass 嵌套语法,很大程度上优化了开发者体验,提高了CSS 的可读性和可维护性。
网友评论