TypeScript 3.4的新功能

TypeScript 3.4的生产版本已经发布,它是Microsoft键入JavaScript的超集的最新版本,它对构建和类型检查进行了改进。

在哪里下载TypeScript

您可以通过NuGet 下载TypeScript ,也可以通过NPM获取它:

npm install -g typescript

[ 什么是TypeScript? 工业强度JavaScript | 通过InfoWorld的App Dev Report新闻通讯了解编程方面的热门话题。 ]

当前版本:TypeScript 3.4中的新功能

  • 新的编译标志--incremental提供了更快的后续构建。 此标志告诉TypeScript保存有关上一次编译的项目图的信息。 当再次使用--incremental调用TypeScript时,它将使用数据来检测最廉价的类型检查和发出项目更改的方式。
  • 为ECMAScript globalThis全局变量引入了类型检查,为访问可在不同环境中使用的全局范围提供了一种标准方法。
  • 现在,通过使用针对数组类型的Readonly修饰符的Readonly的新语法, ReadonlyArray数组类型将变得更加容易。
  • 引入了对只读元组的支持; 任何元组类型都可以使用readonly关键字作为前缀,以使其成为只读元组。
  • 映射类型中的readonly修饰符会自动将类似数组的类型转换为相应的只读数组类型。
  • 为文字值, const断言引入了新的构造。 语法是类型声明,使用const代替类型名称。 当使用const断言构造文字表达式时,开发人员可以发出信号,表示该表达式中的文字类型均不应扩展,对象文字将获得readonly属性,而数组文字将成为readonly元组。
  • 作为一项重大更改,现在this顶级类型键入为typeof globalThis而不是any 。 因此,开发人员在访问thisnoImplicitAny上的未知值时可能会收到错误。
  • 另一个重大变化是TypeScript 3.4中改进的推论可能会产生通用函数,而不是产生和返回常量的函数。

先前版本:TypeScript 3.3中的新功能

TypeScript 3.3于2019年1月下旬发布,可监视复合项目的增量文件,可通过仅检查和重新发送已更改的文件而不是执行整个项目的完整构建来加快构建速度。 --build模式的--watch标志会自动利用此新功能。 在测试中,与原始--build --watch相比,--build --watch功能使构建时间减少了50%至75%。

TypeScript 3.3还具有改进的用于调用联合类型的行为。 此外,Sublime Text的TypeScript插件现在支持在JavaScript文件中进行编辑。

先前版本:TypeScript 3.2中的新功能

TypeScript 3.2于2018年11月发布,引入了对applybindcall方法的更严格检查。 以上是关于函数的方法使功能,例如结合this和部分应用参数和呼叫功能与不同的值this 。 同样,调用函数可以装配有用于参数的数组。

早期版本的TypeScript缺乏对这些函数进行建模的能力; applybindcall都键入了任意数量的参数并返回any参数。 另外, ECMAScript 2015的箭头函数和rest / spread参数提供了新的语法,使表达这些方法中的某些方法变得更加容易。

进行更改后, bind使用名为strictBindCallApply的标志更严格地检查bindcallapply 。 使用此标志时,可调用对象上的方法由新的全局类型CallableFunction描述,该类型声明更严格的bindcallapply签名。 同样,对象上任何可构造但不可调用的方法都由新的全局类型NewableFunction

TypeScript 3.2中的其他新功能包括:

  • 为BigInt启用类型检查,并在定位esnext时支持发出BigInt文字。 可以通过调用BigInt()函数或通过在任何整数数字文字的末尾添加n来写出BigInt文字来访问新的原始类型bigint 。 而且, bigint在使用typeof运算符时会产生新的字符串类型:字符串bigint 。 BigInt支持仅适用于esnext目标。
  • 对象点差在泛型上是允许的,并使用交叉点建模。 JavaScript支持将属性从现有对象复制到新对象中,称为“传播”。
  • 具有基于通用类型的对象保留的功能,其中对象保留模式创建了缺少指定属性的新对象。
  • 对于d.ts ,某些参数不再接受null 。 另外,不赞成使用某些特定于WebKit的属性。

3.2版和更高版本将仅作为MSBuild软件包提供,而不作为独立的编译器软件包提供。 MSBuild软件包取决于Node.js的全局可调用版本的存在。 装有Visual Studio 2017 15.8版及更高版本的计算机具有该Node.js版本。 TypeScript 3.2是对Visual Studio 2015具有编辑支持的最新版本。

先前版本:TypeScript 3.1中的新功能

TypeScript 3.1于2018年9月发布,在函数声明中添加了属性。 因此,对于使用函数初始化的任何函数或const声明,类型检查器都会分析包含的作用域以跟踪添加的属性。 此更改旨在使TypeScript更加智能化模式。

使用JavaScript,函数就是对象,开发人员可以在其上添加属性。 TypeScript的传统方法是通过namespaces构造。 但是这种结构老化得不好。 ECMAScript模块已成为在TypeScript和JavaScript中组织新代码的首选模式,但是名称空间是TypeScript特定的。 另外,名称空间不会与varletconst声明合并,这会使代码转换变得困难。 这些问题会使迁移到TypeScript变得更加困难。

TypeScript 3.1中的其他新功能包括:

  • 版本重定向为typesVersions ,这是JSON文件中的一个字段,告诉TypeScript检查当前版本的TypeScript是否正在运行。 这会影响Node模块的分辨率,并解决库维护人员必须在支持新功能和不破坏TypeScript的较旧版本之间进行选择的情况。 TypeScript的开发人员引用了一个示例,其中维护了一个使用TypeScript 3.0中unknown类型的库。 使用早期版本的所有消费者都会被破坏。 这项新功能提供了一种为TypeScript 3.0之前的版本提供类型的方法,同时也为更高版本的类型提供了类型。
  • 重构承诺的重构将返回由.()then.catch()调用链构造的承诺,以调用使用await async函数。
  • 映射的元组和数组类型具有特色,并且d.ts映射类型(例如PartialRequired现在可以自动处理元组和数组。
  • TypeScript 3.1使用WHATWG DOM规范中的Web IDL文件生成d.ts和其他内置的声明文件库。 这意味着lib.d.ts将更容易保持最新,但是许多特定于供应商的类型已被删除。 此更改可能会破坏现有代码。
  • 使用typeof foo === "function"类型防护也可能会破坏现有代码,在与由{}Object或不受约束的泛型组成的可疑联合类型相交时,会提供不同的结果。

先前版本:TypeScript 3.0的新增功能

TypeScript版本3.0的密钥于2018年7月下旬发布,是一项项目引用功能,该功能使项目可以依赖其他项目。 使用此功能,tsconfig.json文件可以引用其他tsconfig.json文件。 通过指定这些依赖关系,使用TypeScript和能够理解构建顺序和输出结构的工具,可以更轻松地将代码拆分为较小的项目。 结果,构建变得更快。 开发人员还获得了对跨项目的透明导航和编辑的支持。

TypeScript 3.0中的其他新功能包括:

  • 项目引用允许将输入源映射到输出。
  • 添加了一组用于项目引用的API。 这些参考资料将来应该能够与一些构建协调器集成。
  • 改进的错误消息提供了指导,以便开发人员可以更好地理解错误的原因和结果。
  • 元组类型更丰富,因此元组可以对参数列表进行建模。 以前,TypeScript只能对参数集的顺序和计数建模。
  • 支持JSX名称空间中的类型别名, LibraryManagedAttributes用作帮助TypeScript告诉JSX标记接受哪些属性的助手。 这与使用打字稿以帮助做出反应JavaScript UI库 ,使反应能力,行为建模,例如阵营的defaultProps属性,在值填充的props被省略的。
  • unknown类型,用于描述JavaScript中功能最差的类型。 这对于API发出信号,表明类型可以是任何值,并且必须在使用之前执行类型检查非常有用。 返回值必须经过安全自省。 结果, unknown类型不再可以在接口,类型别名或类之类的类型声明中使用。
  • 为JSX添加了两个生产力功能,为JSX结束标记和可折叠的轮廓范围提供了补充。
  • 命名为导入重构,以帮助开发人员使用其来自的模块和单个导入在合格的导入之间来回切换。
  • 快速修复以删除无法访问的代码和未使用的标签。
  • 不推荐使用的内部方法LanguageService#getSourceFile已被删除。 弃用的函数TypeChecker#getSymbolDisplayBuilder和关联的接口以及弃用的函数escapeIdentifierunescapeIdentifier

先前版本:TypeScript 2.9中的新功能

2018年6月发布的候选版本通过keyof运算符和映射的对象类型支持对象文字和数字类型。 Keyof已经是TypeScript的一部分,它提供了一种查询现有类型的属性名称的方法。 但是此运算符早于TypeScript推理unique symbol类型的能力,因此它从未识别符号键。 TypeScript 2.9更改keyof的行为以考虑唯一符号和文字类型。 同样,映射的对象类型(例如PartialReadonly可以识别符号和数字属性键。 用符号命名的属性将不再被删除。

在TypeScript 2.9中还包括:

  • 可以将属性转换为get-set-访问器。
  • 未使用的跨度报告功能使两个类似lint的标志--noUnusedLocals–noUnusedParameters可以显示为“未使用”建议跨度。
  • 声明可以移动到它们自己的文件中,并且可以在项目中重命名文件,同时保持导入路径为最新状态。
  • 当TypeScript能够确定正在将输出打印到终端时, --pretty模式可提供更全面的控制台体验,现在是默认模式。 但是,可以将其关闭。
  • 类型参数可以放置在带标签的模板字符串上。
  • import(…)类型语法,用于解决TypeScript无法引用另一个模块中的类型或模块本身的类型的缺点,而无需在文件顶部包含导入。
  • 支持将泛型传递给JSX元素,并将泛型传递给带标签的模板调用。
  • 为打开的文件添加建议诊断。
  • 显示未使用的声明作为建议。
  • 解析节点模块时,将带有modulename.json的模块名称解析为JSON文件。

TypeScript 2.9的更改可能会破坏现有代码。 Microsoft引用了这些问题以引起注意:

  • 开发人员假设对于任何类型T ,该keyof T始终可分配给string 。 以符号和数字命名的属性使该假设无效。 有一些解决方法,例如使用Extract<keyof T, string>来限制symbolnumber 。 开发人员还可以在--keyofStringsonly编译器标志下转换为旧行为,该标志是过渡标志。
  • REST参数上不允许使用逗号结尾; 这样做是为了符合ECMAScript JavaScript规范。
  • 无约束的类型参数不能再分配给strictNullChecks object
  • 类型的值never不再可以遍历,这可能是在捉虫子类有用的。 通过使用类型断言强制转换为any ,可以避免此行为。

先前版本:TypeScript 2.8的新功能

TypeScript 2.8版于2018年3月发布,添加了用于建模的条件类型构造。 基于JavaScript的条件语法,条件类型有助于在运行时基于类型对简单选择进行建模,同时允许更具表现力的设计时构造。 该构造采用以下形式: A extends B ? C : D A extends B ? C : D 。 应将其读为“如果类型A可分配给B,则类型归结为C,否则变为D。” 与引入了新类型变量的new infer关键字相比,条件类型还提供了一种从类型推断新类型的新方法。 TypeScript 2.8还提供了使用条件类型的新类型别名。

TypeScript 2.8的其他新功能包括:

From: https://www.infoworld.com/article/3249607/whats-new-in-typescript.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值