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.findLast
和 Array.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