Skip to main content

2023/11/12

新数组方法

ECMAScript 2023 规范最近已经定稿,其中提出了几个 Array 对象的新方法

  • toSorted。类比 sort,不会影响原有数组
  • toReversed。类比 reverse,不会影响原数组
  • toSpliced。类比 splice,不会影响原数组。但是返回值变成新数组,而不是返回被删除的元素
const languages = ["JavaScript", "TypeScript", "CoffeeScript"];
const spliced = languages.toSpliced(2, 1, "Dart", "WebAssembly");
console.log(spliced);
// => [ 'JavaScript', 'TypeScript', 'Dart', 'WebAssembly' ]
  • with。复制数组
const languages = ["JavaScript", "TypeScript", "CoffeeScript"];
const updated = languages.with(2, "WebAssembly");
console.log(updated);
// => [ 'JavaScript', 'TypeScript', 'WebAssembly' ]
console.log(languages);
// => [ 'JavaScript', 'TypeScript', CoffeeScript' ]

以上的新方法不仅适用于常规的数组对象,还可以在任意 TypedArray 上使用,包括 Int8Array、Unit64Array 等类型

ES2023 还有其他特性,比如数组倒序查找,Array.prototype.findLastArray.prototype.findLastIndex。更多内容参考 https://github.com/tc39/proposals

Angular 17 来了

看起来性能提升不少 参考 文章

  • 可延迟视图
  • 内置控制流
  • 新项目默认使用 vite 和 esbuild(16 已支持)

另外,新的官网还挺不错的 https://angular.dev/

Compute Pressure API

观察 CPU 变化,虽然浏览器可以通过快捷按钮查看各个网页的 cpu 占用,不过如果需要在前端代码里获取这个信息会比较棘手。这个 api 刚好可以解决这个问题,不过目前还在草案阶段,MDN 上还没相关信息,使用方法也需要严格按照步骤来操作 https://zhuanlan.zhihu.com/p/656807023

as const

const menu = {
home: "/home",
about: "/about",
contact: "/contact",
};
let route: keyof typeof menu;
route = "store"; // No error

加上 as const 让类型提示更严格

const menu = {
home: "/home",
about: "/about",
contact: "/contact",
} as const;
let route: keyof typeof menu;
route = "store"; // Error