TypeScript 4.4 正式发布

天正建筑ts4.4破解版 立即下载

在TypeScript之前,受Java、C、C++等静态类型语言的影响,大多数人对于静态类型的印象是刻板又啰嗦,而且编译流程极其繁琐。但是在深入了解TypeScript之后,就会发现它既拥有静态类型的优点,比如自编译能力、编译时的强类型、模块化等,同时代码又能够像JavaScript一样简洁灵活,深受广大开发者的喜爱。

近日,微软官方发布了 TypeScript 4.4 版本,开发者可以通过 NuGet 开始使用或者通过以下命令进行安装:

npm install typescript

本次更新亮点包括:

  • 提供针对 Aliased Conditions 和 Discriminants 的控制流程分析
  • 增加 symbol 类型和模板字符串模式的索引签名
  • 在 Catch 中的变量默认为 unknow 类型(--useUnknownInCatchVariables)
  • 准确的可选属性类型(--exactOptionalPropertyTypes)
  • 静态块类
  • 针对 tsc --help 的更新和改进
  • 性能优化
  • JavaScript 的拼写建议
  • 嵌入提示
  • 重大变化

本文将对大家普遍关心的“性能优化”及“重大变化”两个方面进行详细解读。

性能优化

更快的声明

TypeScript 现在会缓存内部符号在不同上下文中是否可以访问以及特定类型应该如何打印。这些更改可以提高 TypeScript 在具有相当复杂类型代码中的整体性能,尤其是在 declaration 下标记 .d.ts 的文件。

更快的路径规范化

TypeScript 经常需要对文件路径进行几种类型的“规范化”,以使它们成为编译器可以在任何地方都能使用的统一格式。这包括用斜杠替换反斜杠,或者删除中间 /./  和  /../ 路径段。当 TypeScript 在数百万条路径上运行时,这些操作可能会变得有点慢。在 TypeScript 4.4 中,路径首先要进行快速检查,查看它们是否需要规范化。在大型项目中,这些改进总共减少了 5-10% 的项目加载时间,而在我们内部测试过的大型项目中,这些改进显著地减少了更多的加载时间。

更快的路径映射

TypeScript 现在缓存了它构建路径映射的方式(在 tsconfig.json 中使用 paths 选项 ),对于具有数百个映射的项目,这种减少是非常显著的。

通过 --strict 进行更快的增量编译

这实际上是一个 Bug,如果启用了 --strict TypeScript 最终会在 --incremental 编译下重做类型检查工作,这就导致了许多构建就像关闭 --incremental 一样缓慢。TypeScript 4.4 修复了这个问题,同时这个修改也被反向移植到了 TypeScript 4.3 中。

针对 Big Ouputs 的更快源映射生成

TypeScript 4.4 为超大输出文件的源映射生成添加了优化功能,在构建旧版本的 TypeScript 编译器时,可使 emit 时间减少 8% 左右。

通过 --force 进行更快的编译

在项目引用上使用 --build 模式时,TypeScript 必须执行最新的检查以确定有哪些文件需要重建。但是,在执行 --force 构建时,该信息又是无关紧要的,因为每个项目的依赖项都将从头开始构建。在 TypeScript 4.4 中,--force 构建避免了那些不必要的步骤然后开始完整构建。

重大变化

对导入函数更兼容的间接调用

在 TypeScript 的早期版本中,调用来自 CommonJS、AMD 和其他 非ES 模块系统的导入会设置被调用函数的 this 值。具体来说,在以下示例中,当调用 fooModule.foo() 时,foo() 方法将把fooModule 设置为 this 值。

// Imagine this is our imported module, and it has an export named 'foo'.
let fooModule = {
    foo() {
        console.log(this);
    }
};

fooModule.foo();

当我们调用 ECMAScript 导出的函数时,这不是它们应该工作的方式。这就是为什么TypeScript 4.4 会在调用导入函数时使用下面的 emit,会故意丢弃 this 值。

// Imagine this is our imported module, and it has an export named 'foo'.
let fooModule = {
    foo() {
        console.log(this);
    }
};

// Notice we're actually calling '(0, fooModule.foo)' now, which is subtly different.
(0, fooModule.foo)();

在 Catch 变量中使用 unknown

使用 --strict 标志运行的用户可能会看到关于 catch 变量 unknow 的新错误,特别是在现有代码假定只捕获了 Error 值的情况下。这通常会导致如下错误消息:

Property 'message' does not exist on type 'unknown'.
Property 'name' does not exist on type 'unknown'.
Property 'stack' does not exist on type 'unknown'.

为了解决这个问题,你可以专门添加运行时检查,以确保抛出的类型与期望的类型相匹配。如果不这样的话,你只能使用类型断言,在 catch 变量中添加一个显式的:any,或者关闭 -- useUnknownInCatchVariables。

更广泛的“Always-Truthy”承诺检查

在以前的版本中,TypeScript 引入了“Always truth promise check”来捕捉可能被遗忘的 await 代码;然而,检查只对命名声明有效。这也就意味着,这段代码将正确地接收一个错误……

async function foo(): Promise<boolean> {
    return false;
}

async function bar(): Promise<string> {
    const fooResult = foo();
    if (fooResult) {        // <- error! :D
        return "true";
    }
    return "false";
}

但是下面的代码不会

async function foo(): Promise<boolean> {
    return false;
}

async function bar(): Promise<string> {
    if (foo()) {            // <- no error :(
        return "true";
    }
    return "false";
}

抽象属性不允许初始化器

以下代码是一个错误,因为抽象属性可能没有初始值设定项:

abstract class C {
    abstract prop = 1;
    //       ~~~~
    // Property 'prop' cannot have an initializer because it is marked abstract.
}

相反,你只能为属性指定一个类型:

abstract class C {
    abstract prop: number;
}

关于 TypeScript 4.4 以上功能的详细信息,请查看官方发布公告。

新手避坑指南:用Silvaco Atlas搞定GaN HEMT电热仿真的完整流程(附代码解读) 本文详细介绍了使用Silvaco Atlas进行GaN HEMT电热特性仿真的完整流程,特别针对新手常见问题提供避坑指南。从软件环境配置、结构定义、网格划分到物理模型设置,逐步解析关键步骤,并附有代码解读和调试技巧,帮助读者快速掌握GaN器件仿真的核心技术。 阅读详情

相关推荐

基于SOEM的伺服电机控制实战:从配置到调试

本文详细介绍了基于SOEM的伺服电机控制实战,从硬件配置到软件调试的全过程。通过分享PDO映射、状态机控制、性能优化等核心技巧,帮助开发者快速掌握EtherCAT通信与伺服电机控制的关键技术,提升工控系统开发效率。

weixin_29165465的博客 522

TypeScirpt 4.4 正式发布|GitCode

TypeScript 是一种用于应用程序级 JavaScript 的语言。JavaScript 作为 Java 的补充,旨在用于创建以网络为中心的应用程序,是一种轻量级的解释型编程语言,尽管它很容易实现,但 JavaScript 并不能算做是一个成熟的编程语言,“客户端 JavaScript 不允许读取或写入文件、不能用于网络应用程序、没有任何多线程或多处理器功能”是它最大的短板,由于其自身局限性导致 JavaScript 难以胜任和维护大型项目的开发,TypeScript 从此应运而生。 TypeScri

白天写代码,晚上追AI大模型,偶尔搞点八卦 开源动态|技术干货|实习机会|生态活动 我负责分享,你负责变强 546

反激开关电源变压器设计实例讲解(定明芳)

内容来自《反激变压器的设计》(定明芳主讲)。 定名芳老师主要讲了10步,最后应该还有一步,线径的选择已经绕制方式。这里进行了记录整理,把一些公式来源进行了推导。所有的设计都是基于理论计算。 1.确定电源规格 2.确定工作频率和最大占空比 3.计算匝比(利用伏秒平衡原则) 此处插入解释一下伏秒平衡,根源是磁通量平衡。该原则可以用来检查MOS管耐压是否够。 4.计算初级线圈峰值电流 基于CCM模式计算的。ip1是开关管要关闭时的峰值电流,ip2是开关管开始导通时的起始电流。因为时CCM模式,所以,ip

ydgd118的博客 5万+

学习TypeScript

第一章 TypeScript4简介 1.1、TypeScript4简介 TypeScript 是由微软开发的一款开源的编程语言,TypeScript 是 Javascript 的超集,遵循最新的 ES6、ES5 规范,TypeScript 扩展了 JavaScript 的语法。TypeScript 更像后端 Java、C#这样的面向对象语言,可以让 JavaScript 开发大型企业项目。谷歌也在大力支持 Typescript 的推广,谷歌的 angular2.x+ 就是基于 Typescript

Mark Sheng的博客 3480

UDS诊断ISO14229新手入门篇

这个命令的格式稍微复杂一点。sub-function = 0x06 用于读取某个 DTC 及其相关的环境数据,此时 parameter 为 4 个 byte,前三个 byte 用于标识我们要读取的 DTC,第四个 byte 用于标识要读取的环境数据的范围,UDS 规定使用 FF 来表示读取所有的环境数据,各厂家可以要根据自己的需求定义其他的值来代表要读取的环境数据的范围。环境数据包括 DTC 状态,优先级,发生次数,老化计数器,时间戳,里程等,厂家还可以根据自己的需求定义一些此 DTC 产生时的测量数据。

weixin_45387165的博客 1974

从RRT到平滑轨迹:机械臂避障规划仿真全流程解析

本文详细解析了机械臂避障规划从RRT算法到平滑轨迹优化的全流程,包括MATLAB实现、碰撞检测工程实践及轨迹平滑优化技巧。通过RRT算法在关节空间的路径搜索与Minimum Jerk/Snap优化,实现机械臂在复杂环境中的高效安全运动,适用于工业自动化与机器人控制领域。

weixin_29051811的博客 295

如何升级typescript版本

今天新建angular项目时 遇到了 项目无法编译的状况 后来经过各种查询 提示可能是需要升级typescript的版本 故查询到了如何升级typescript npm install -g typescript...

shane的博客 1万+

【AI应用实战-WorkBuddy】WorkBuddy 能帮你做什么(一)

文章摘要: WorkBuddy是一款AI工作助手,专为提升效率而设计,适用于经常处理文档、代码、数据分析等重复性任务的职场人士。它能通过自然语言交互快速完成五大核心场景任务: 周报撰写:输入工作要点,10分钟生成专业周报; 代码调试:解析报错信息,3分钟提供解决方案; Excel分析:自动计算数据趋势并生成图表和结论; 自动化脚本:将重复流程转为脚本,节省98%时间; 文档生成:根据代码自动补充README、API文档和注释。 效果对比:传统手动操作耗时1-3小时的任务,WorkBuddy可将时间缩短至10

353

typescript

1、TypeScript是以JavaScript为基础构造的语言,是JavaScript的超集2、扩展了JavaScript,并添加了类型。3、TS代码需要通过编译器编译为JS,然后再交由JS解析器执行。4、TS完全兼容JS,任何的JS代码都可以直接当成JS使用。5、相较于JS而言,TS拥有了静态类型,更加严格的语法,更加强大的功能;TS可以在代码执行前就完成代码的检查,减小了运行时异常的的出现的几率;TS代码可以编译为任意版本的JS代码,可有效解决不同JS运行环境的兼容问题;

疯狂的毛毛虫-一个java后端爱好者 1239

【小白深度教程 1.32】手把手教你从多视角图像进行 3D 重建(SfM 算法)

重建的目标是从一组照片中推导场景的几何结构,假设摄像机位置和内部参数是已知的或可以从图像集中猜测。 这是通过使用多个照片,在其中应用运动结构法(Structure from Motion,SfM)来解决像素级对应问题,部分地恢复3D信息来实现的。

2401_87064292的博客 2160

orange软件:入门使用

orange做数据分析契机实验手册目录orange软件部分界面展示小试牛刀:数据导入和展示小试牛刀:散点图绘制总结 契机 今天在上大数据时代实验课,作为一名软件工程专业的大三学生,在上这节公选课之前就决定这节课做完这个学期所有的实验报告,可以说“有亿点”不屑;尤其当老师说Python很麻烦的时候,我更是震惊了,因为我接触过这么多编程语言,Python真的很友好了,很傻瓜,但是当老师打开实验手册的时候,我真香了!!!下面先来看看手册的目录: 实验手册目录 为什么会真香呢,因为目录里这些有好多机器学习算法!

weixin_45880844的博客 1万+

TypeScript 4.0正式发布!现在是开始使用它的最佳时机

作者 | Daniel Rosenwasser译者 | 王强策划 | 李俊辰今天,微软宣布 TypeScript 4.0 正式版上线了!这一新版本深入改进了表现力、生产力和可伸缩性,是 ...

Yvette Lau的专栏 1784

不加行也能填满:用 ABAP BDC 驯服 Table Control 滚动录制缺陷,批量维护供应商银行账户

摘要 本文探讨了在SAP ECC/S4HANA系统中处理供应商主数据时,Table Control控件带来的批量导入挑战。文章指出,银行账户维护界面中Table Control的滚动动作难以被录制工具捕捉,导致批量导入数据时仅能填充前5行。解决方案是通过BDC_OKCODE显式触发翻页(如=P+),并配合行号拼接(如(01)~(05))将数据写入不可见行。文中提供了完整的ABAP程序示例,展示了如何读取外部文件、动态生成BDCDATA、处理表格翻页逻辑,最终通过CALL TRANSACTION执行XK01事

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 277

TypeScript 5.4 正式发布

公众号:程序员白特,欢迎一起交流学习~原文作者:前端充电宝3 月 6 日,TypeScript 发布了 v5.4 版本,该版本带来了以下更新:类型缩小会在闭包中保留引入新的实用程序类型NoInfer<T>新增和新的模块解析选项新的模块导入检查机制TypeScript 5.5 即将弃用的功能。

weixin_45727472的博客 1176

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

微软宣布 TypeScript 4.8 正式发布

typescript最新发布

qq_35864320的博客 1635

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

eslint 无法格式化ts_技术周刊 2020-08-25:TypeScript 4.0 正式发布,也许是学习TS最好的时候...

前端快爆TypeScript 4.0 正式发布,包含如下新特性可变元祖类型元组类型语法中的 spread 现在可以使用泛型rest 元素可以出现在元组中的任何位置,而不仅仅是在结尾标记的元祖元素元组类型现在可以提供标记,例如:type Range = [start: number, end: number]同时也支持与解构一起使用,例如:type Foo = [first: number, sec...

weixin_32236693的博客 155

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

TypeScript 4.5 正式版发布,大量新特性和功能优化

11月17日,微软发布了 TypeScript 4.5正式版本 ,4.5正式版本和 RC 版本在功能上并没有什么改动,除了添加关于新 JSDoc 特性的注释,不过这个特性也是 RC 版本的新功能,只是当时没有写出来。 TypeScript 4.5 正式版新特性: 实验性功能:在夜间版本支持 Node.js 运行 ECMAScript 模块 从 node_modules 支持lib 新的Awaited类型和对Promise对象的优化 模板字符串可以用作判断符 引入 es2022 ...

过客2019 723

TypeScript 4.2 正式发布:更智能的类型别名保留,声明缺失的帮助函数,还有许多破坏性更新...

作者 | Daniel译者 | 张健欣策划 | 李俊辰今天,我们很高兴地宣布 TypeScript 4.2 的发布!TypeScript 是 JavaScript 的一个扩展,增加了静态类...

Yvette Lau的专栏 2225

极客日报:字节大战腾讯元宇宙;Windows 11将于10月5日正式推送;TypeScript 4.4 发布

一分钟速览新闻点! 字节大战腾讯元宇宙:布局社交产品Pixsoul 字节跳动取消大小周后首次发薪,收入普降17% 华为原GR副总裁加入百度 丁磊回应“腾讯放弃独家音乐版权” 腾讯推出微信信息加密小程序“密信” Windows 11将于10月5日正式推送 Twitter创始人宣布建立以比特币为中心的交易平台 三星正式宣布芯片代工涨价:涨幅高达20% Apple Car车身外部或配备显示屏 苹果Apple Watch S7生产遇阻:因设计太复杂 TypeScript 4.4正式发布 Python 3.9.7

极客日报 3071

TypeScript 4.3 beta 版本正式发布:新增import语句补全,对模板字符串类型进行改进...

作者 | TypeScript 团队译者 | 王强策划 | 田晓旭来源|前端之巅今天,我们很高兴为大家带来了 TypeScript 4.3 的 Beta 版本!要开始使用这个 Beta 版...

我本可以容忍阳光,如果我不曾见过太阳,然而阳光已使我荒凉,成为更新的荒凉。 853

Vue Router 4.0 正式发布!焕然一新。

大前天,Vue Router 4 正式发布稳定版本。 在经历了 14 个 Alpha,13 个 Beta 和 6 个 RC 版本之后,Vue Router v4 闪亮登场,为你带来了 TypeScript 集成、新功能以及对现代应用程序的一致性改进,已经准备好成为 Vue3 新应用的最佳伴侣。 将近 2 年的时间,大约 1500 次提交,15 个RFC[1],无数的心血……以及许多用户的帮助以及他们的错误报告和功能请求。 谢谢大家的帮助! 项目结构优化 Vue Router 现在分为三个模块: Histo

武童乐的博客 1417

Nuxt 4 正式发布!

Nuxt 4 是一次以稳定和开发体验为核心的进化,它没有一味追求“炫酷”的新特性,而是逐步打磨每一处细节,让开发者写得更安心、改得更省心、跑得更顺心。这是一个专注于稳定性和开发者体验的重大版本更新,在提升性能、代码结构、类型系统等方面做出了诸多优化。,将 app、server、shared、builder 等上下文分离,提高类型推断准确性。Nuxt 4 推出了一种新的默认项目结构,把你的应用代码集中到。✅ 如果你不想迁移,Nuxt 也会自动识别旧结构,保持兼容!运行你的测试、查看构建结果,根据 升级指南(

程序员成长指北 965
下一篇: 8 月 Github 上有哪些值得参与的开源项目?
开源头条
博客等级 码龄13年 1475粉丝 226原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值