ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

TypeScript 3.9稳定版本新增功能

2020-06-06 13:58:49  阅读:278  来源: 互联网

标签:TypeScript string ts Promise 版本 3.9


TypeScript于5月12日发布了该年度的第二个版本。它是3.9版,现在是稳定版。在本文中,我将指出TypeScript 3.9的一些令人兴奋的新功能。

@ts-expect-error

让我们举一个例子,我们定义一个以两个字符串为参数的函数。

printName(firstName: string, lastName: string) {     console.log(firstName);    console.log(lastName);    assert(typeof firstName === "string");       assert(typeof lastName === "string");}

 

通常,当TypeScript用户滥用此功能时,他们会得到一条有用的红色花样和一条错误消息,而JavaScript用户将断言它为错误。但是,如果我们编写一个单元测试来检查此功能,将会发生什么?

expect(() => {    printName(1234, 5678); }).toThrow();

 

如果我们的测试是用TS编写的,则会引发如下错误:

printName(1234, 5678);// ~~~ // error: Type ‘number’ is not assignable to type ‘string’.

 

作为对此的解决方案,TypeScript 3.9版带来了一个新功能:// @ts-expect-error注释。如果我们在代码行之前将此注释作为前缀放置,TypeScript将不会报告错误。

但是,如果没有错误,TypeScript将告知我们的代码中有不必要的注释,如下所示:Unused '@ts-expect-error' directive。

此//@ts-expect-error注释的另一个用途是我们可以将其用作禁止注释。// @ts-ignore是一个现有的注释,用作抑制注释-两者之间的主要区别在于,// @ts-ignore如果下一行没有错误,它将通知您。

速度改进

对于早期版本的TypeScript,对于Material-UI之类的软件包的编译和编辑速度存在很多抱怨。

在新版本中,TypeScript开发团队通过优化涉及大型联合,相交,条件类型和映射类型的几种病理情况来解决此问题,并减少了Material-UI编译中40%的时间。此外,他们还致力于与Visual Studio Code等编辑器有关的文件重命名功能。

JavaScript中的CommonJS自动导入

以前,无论你使用哪种文件类型,TypeScript始终期望ECMAScript样式的导入。但是,大多数开发人员require(); 在编写JavaScript文件时都使用CommonJS样式的导入而不是ECMAScript样式的模块。

ECMAScript样式:import * as fs from "fs";

CommonJS样式:const fs = require("fs");

 

在最新版本中,TypeScript现在可以自动检测您正在使用的导入类型,以保持文件样式的整洁。

推断和改进 Promise.all

在3.7版中,TypeScript提出了对函数声明的更新,例如Promise.all和Promise.race。但是,此更新有一些并发症,因为当与null或混合使用时会引起回归undefined。下面给出一个例子。

interface Bird{    fly(): void } interface Fish{    singKissFromARose(): void } async function animalBehaviours(birdBehaviour: Promise<Bird>,     fishBehaviour: Promise<Fish| undefined>) {    let [bird, fish] = await Promise.all([birdBehaviour,    fishBehaviour]);    bird.fly();   // ~~~~    // Object is possibly ‘undefined’.

尽管fishBehaviour 是其中包含的一个undefined,但它也以某种方式影响了birdBehaviour 包含undefined。因此,TypeScript 3.9版本也解决了此问题。

代码操作保留新行

许多开发人员喜欢在单独的功能代码行之间保留新行,但是早期的TypeScript代码重构并未保留新行。它几乎删除了代码行之间的所有空白行。在最新版本中,TypeScript可以解决此问题,现在TypeScript代码重构在运行重构后可以在代码中保留新行。

缺少返回表达式的快速修复

有时我们可能会忘记在函数的末尾从函数返回值。因此,TypeScript现在提供了一种快速解决方案来添加缺失的return语句。

条件表达式中的未调用函数检查

在3.7版之后,TypeScript在if条件中检查未调用的函数,并报告错误。在3.9版中,此错误检查也进一步扩展到三元条件语句。

其他微小变化

除了这些更新之外,还有一些较小的更新变化,例如:

  • }与>现在的无效JSX文本字符

  • export * 被保留

  • 获取器和设置器不再枚举

  • 扩展的类型参数any 不再充当any

  • 更多libdom.d.ts完善

总体而言,这些是我们在最新版本的TypeScript中可以看到的变化。因此,如果你是TypeScript爱好者,那么最好保持最新的更新,这可以使你的编码工作更轻松。

标签:TypeScript,string,ts,Promise,版本,3.9
来源: https://www.cnblogs.com/xiewangfei123/p/13054422.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有