TypeScript 5.1 & 5.2
getter 和 setter 可以完全不同类型了
以前我们提过,getter 的类型至少要是其中一个 setter 的类型。这个限制被突破了。现在可以完全使用不同类型了。

v5.1 后,没有再报错了

Using 和 Disposable
看这篇 TypeScript – Using Disposable
Decorator Metadata
看这篇 TypeScript – Decorator Metadata
Copying Array Methods – toReversed、toSorted、toSpliced、with
参考: Docs – Announcing TypeScript 5.2
JavaScript array 有几个功能是 mutable 的。它不会先 clone 一份给你。
比如 Array.reverse
const array = [1, 2, 3]; const array1 = array.filter(() => true);
console.log(array === array1); // false const array2 = array.reverse();
console.log(array2 === array); // true
看到吗,filter 是 immutable,reverse 是 mutable。一不小心就会被坑。
于是 JS 推出了 immutable 版本的 reverse,叫 toReversed
const array2 = array.toReversed();
console.log(array2 === array); // false
除了 toReversed,还有 toSorted、toSpliced、with
with 的作用是替换 value,写法是这样的
const array = ['a', 'b', 'c']; const array2 = array.with(1, 'bb');
console.log(array2 === array); // false
console.log(array2[1]); // 'bb'
兼容性
tsconfig.json 需要添加 compilerOptions.lib "ES2023.Array"

browser 方面 Safari 需要 IOS 16 才支持,所以最好是加上 runtime polyfill。

比如 core.js
import 'core-js/actual/array/with';
import 'core-js/actual/array/to-reversed';
import 'core-js/actual/array/to-sorted';
import 'core-js/actual/array/to-spliced';
import type
在 import 的时候,可以声明我们只是想要 import 类型。

当 import type 以后,类型就不可以被当成 value 使用。比如上面的例子,我 import 的是 class 但是我只想把它当成类型给 TypeScript 用,这样声明以后,transpile to JS 后就不会整的 import 这个 class。
WeakSet 和 WeakMap 可以用 symbol 作为 Key
这个也是 JavaScript 的功能。目前 stage 3。
需要 setup tsconfig.json

调用
const wk = new WeakMap();
const symbol = Symbol('key');
wk.set(symbol, ''); // 以前会报错 const ws = new WeakSet();
ws.add(symbol); // 以前会报错
兼容度,Safari IOS 和 Firefox 兼容都不太理想。

而且视乎没有 polyfill。我看,还是别用了吧。
TypeScript 5.1 & 5.2的更多相关文章
- TypeScript: Angular 2 的秘密武器(译)
本文整理自Dan Wahlin在ng-conf上的talk.原视频地址: https://www.youtube.com/watch?v=e3djIqAGqZo 开场白 开场白主要分为三部分: 感谢了 ...
- TypeScript为Zepto编写LazyLoad插件
平时项目中使用的全部是jQuery框架,但是对于做webapp来说jQuery太过于庞大,当然你可以选择jQuery 2.*针对移动端的版本. 这里我采用移动端使用率比较多的zepto框架,他跟jqu ...
- TypeScript Vs2013 下提示Can not compile modules unless '--module' flag is provided
VS在开发TypeScript程序时候,如果import了模块有的时候会有如下提示: 这种情况下,只需要对当前TypeScript项目生成设置为AMD规范即可!
- TypeScript
TypeScript: Angular 2 的秘密武器(译) 本文整理自Dan Wahlin在ng-conf上的talk.原视频地址: https://www.youtube.com/watch? ...
- 打造TypeScript的Visual Studio Code开发环境
打造TypeScript的Visual Studio Code开发环境 本文转自:https://zhuanlan.zhihu.com/p/21611724 作者: 2gua TypeScript是由 ...
- 转职成为TypeScript程序员的参考手册
写在前面 作者并没有任何可以作为背书的履历来证明自己写作这份手册的分量. 其内容大都来自于TypeScript官方资料或者搜索引擎获得,期间掺杂少量作者的私见,并会标明. 大部分内容来自于http:/ ...
- Webstorm编译TypeScript
下载webstorm 下载node.js编译器npm Webstorm的安装很简单.但如果没有Java For Mac 环境打开Webstorm时会有提示,点击提示会跳转下载链接,下载安装就好. ...
- CSS3与页面布局学习总结(七)——前端预处理技术(Less、Sass、CoffeeScript、TypeScript)
CSS不像其它高级语言一样支持算术运算.变量.流程控制与面向对象特性,所以CSS样式较多时会引起一些问题,如修改复杂,冗余,某些别的语言很简单的功能实现不了等.而javascript则是一种半面向对象 ...
- 使用TypeScript拓展你自己的VS Code!
0x00 前言 在前几天的美国纽约,微软举行了Connect(); //2015大会.通过这次大会,我们可以很高兴的看到微软的确变得更加开放也更加务实了.当然,会上放出了不少新产品和新功能,其中就包括 ...
- 产品前端重构(TypeScript、MVC框架设计)
最近两周完成了对公司某一产品的前端重构,本文记录重构的主要思路及相关的设计内容. 公司期望把某一管理类信息系统从项目代码中抽取.重构为一个可复用的产品.该系统的前端是基于 ExtJs 5 进行构造的, ...
随机推荐
- webgl未使用独立显卡报告2
楔子 在上一篇文章 <# [https://juejin.cn/post/7074771064286347301] webgl未使用独立显卡报告> 发表后,有读者在公众号给我发了一段评论, ...
- Error: Dynamic require of "path" is not supported
failed to load config from D:\BaiduSyncdisk\vue3\sys-manager\vite.config.jserror when starting dev s ...
- [oeasy]python0124_Code_page_437_IBM_5150_点阵式字形码_显示器效果
字符显示器 回忆上次内容 简体和繁体的汉字 字符数量都超级大 感谢王选和陈堃銶等前辈发明了激光照排技术 中文排版从此使用上了gb2312编码 添加图片注释,不超过 140 字(可选) ...
- oeasy教您玩转vim - 7 - # 从头插入
另存与保存 回忆上节课内容 上次我们学会了另存为命令 : saveas {file} 还有这个直接保存命令 : w 真的可以把修改存了 下面我们来研究插入命令的细节. 插入命令 首先我们可以查询这个插 ...
- OpenAI深夜丢炸弹硬杠谷歌搜索
这几年科技变革太快,AI更是飞速发展,作为一名IT老兵,使用过的搜索引擎也是一换再换.这不,刚消停了一段时间的OpenAI又丢出一个炸弹SearchGPT,直接跟谷歌掀桌子了. 1.谷歌搜索的无奈 早 ...
- app备案证明需要提供md5值和公钥的解决方案
现在app上架华为市场.小米市场.苹果市场等大型的应用商店,都需要提供国内的app备案证明.无论是安卓还是ios,都需要备案了. 但是问题是备案的时候需要填写app的bundle ID.公钥和MD5值 ...
- Jmeter函数助手8-counter
counter函数用于线程计数,类似计数器. TRUE每个用户有自己的计数器:FALSE使用全局计数器:即线程之间是否需要共享累加计数器,TRUE否,FALSE是 存储结果的变量名(可选) 1.线程之 ...
- 【IDEA】DEBUG调试问题
不要将断点打在方法的声明上: 会有一个菱形标志,在标记之后运行DEBUG模式会跑不起来 查看所有的断点标记: 在这里直接找到所有标记位置,弄掉就会跑起来了
- SmolLM: 一个超快速、超高性能的小模型集合
简介 本文将介绍 SmolLM.它集合了一系列最尖端的 135M.360M.1.7B 参数量的小模型,这些模型均在一个全新的高质量数据集上训练.本文将介绍数据整理.模型评测.使用方法等相关过程. 引言 ...
- 【转载】人工智能CAE仿真分析技术
原文: https://cloud.tencent.com/developer/news/628731 AI与CAE相结合 CAE的本质是对复杂工程问题通过合理简化建立数学模型,并根据输入求得输出.深 ...