热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

TypeScript2.7有什么改进

小编给大家分享一下TypeScript2.7有什么改进,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收

小编给大家分享一下TypeScript 2.7有什么改进,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

TypeScript 2.7版本引入了一些突破性的改变,开发人员在升级代码库以使用TypeScript 2.7时,应该知晓这些变化。

当被问及TypeScript目前的版本规划时,项目经理Daniel Rosenwasser说:

我认为,从最广泛的意义上来说,我们关注的是易用性,并确保我们现有的用户继续在TypeScript上的投入是有价值的。前者通常是减少在起步时的学习成本,后者通常关注的是表现性及安全性。

例如,现有的TypeScript用户要求对类初始化进行更严格的检查。继TypeScript 2.6版添加了严格的函数类型检查之后,2.7版本又添加了在类中使用strictPropertyInitialization标志的严格属性初始化检查。这个标志会检查类的每个实例的属性,确定它是在类的构造方法里被初始化的,还是通过属性初始化程序初始化的。当升级到2.7后,使用严格标记的开发人员将会自动地在他们的源代码中获得这个额外的检查。建议在TypeScript中使用这一严格的标记,因为它可以帮助开发人员找到并消除其他类型的错误或异常行为。

明确的赋值断言功能也已经可用了,即使在TypeScript分析器不能确认赋值时,也可以指示TypeScript的控制流分析器始终认定一个明确已赋值的。

TypeScript的设计师之一Anders Hejlsberg表示,版本还改进了对对象字面量的类型推断:

改进在相同上下文中出现的多个对象字面量的类型推断。当多个对象字面量类型组成一个union类型时,我们将对象字面量类型规范化,这样所有的属性就会出现在union类型的每个组成部分中。

const obj = test ? { text: "hello" } : {}; 
// { text: string } | { text?: undefined } const s = obj.text; // string | undefined

第一行我们推断出obj的类型{},第二行随后导致了错误,因为obj似乎没有属性。这显然并不是理想的效果。

其他语言级别的改进包括改进union类型和instanceof表达式中结构相同类的处理方法,以及从操作符中推断出更好的类型保护。

TypeScript 2.7也对ES2015+符号进行了改善支持。属性可以使用const声明的符号来命名,可以在接口、类或类型文字中将Identifier或PropertyAccessExpression用作计算属性名称的一部分。

改进了与CommonJS模块的互操作性,支持 import d from “cjs”,并使用了esModuleInterop标志。在内部,TypeScript利用了CJS模块的ES模块。Rosenwasser向InfoQ解释了这项功能背后的动机:

我们知道在模块互操作性策略中存在一些不友好性,这使得一些用户更难以掌握TypeScript。对于新TypeScript用户来说,这是一个障碍,这也是为什么我们要在这个版本中提高esModuleInterop标记优先级的原因。当然,我们也有参与对ECMAScript标准的更新,并且在发展我们语言时也非常注意吸收这些标准。

第三阶段的数字分隔符提议,预计将作为ES2018的一部分,现在已经包含在TypeScript中,帮助TypeScript保持当前对Javascript语言的年度更新。

在TypeScript 2.7中,有一些改进是针对开发人员使用体验的。像webpack和Gulp这样的开发工具将从新的增量构建编译器API中受益。这一变化将使工具更容易地进行因更新代码带来的资源更新,而不是需要在每次增量更新中重新构建整个项目。此外,ide还提供了一个更新的TypeScript语言服务API,允许开发人员自动修复文件中所有已明确的问题。

TypeScript 2.7可以通过npm的npm install -g typescript命令进行安装,或通过GitHub获得。

以上是“TypeScript 2.7有什么改进”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程笔记行业资讯频道!


推荐阅读
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
  • 本文详细探讨了在Windows 98环境下安装Apache 1.3.9、JServ、GNUJSP 1.0、JDK 1.2.2及JSDK 2.0后遇到的中文显示问题,并提供了多种有效的解决方案。 ... [详细]
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • 题目描述:Balala Power! 时间限制:4000/2000 MS (Java/Other) 内存限制:131072/131072 K (Java/Other)。题目背景及问题描述详见正文。 ... [详细]
  • Gradle 是 Android Studio 中默认的构建工具,了解其基本配置对于开发效率的提升至关重要。本文将详细介绍如何在 Gradle 中定义和使用共享变量,以确保项目的一致性和可维护性。 ... [详细]
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • egg实现登录鉴权(七):权限管理
    权限管理包含三部分:访问页面的权限,操作功能的权限和获取数据权限。页面权限:登录用户所属角色的可访问页面的权限功能权限:登录用户所属角色的可访问页面的操作权限数据权限:登录用户所属 ... [详细]
  • 题目概述:Sereja 拥有一个由 n 个整数组成的数组 a1, a2, ..., an。他计划执行 m 项操作,这些操作包括更新数组中的特定元素、增加数组中所有元素的值,以及查询数组中的特定元素。 ... [详细]
  • SSE图像算法优化系列三:超高速导向滤波实现过程纪要(欢迎挑战)
    自从何凯明提出导向滤波后,因为其算法的简单性和有效性,该算法得到了广泛的应用,以至于新版的matlab都将其作为标准自带的函数之一了&#x ... [详细]
  • 笔记说明重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系& ... [详细]
  • 【MySQL】frm文件解析
    官网说明:http:dev.mysql.comdocinternalsenfrm-file-format.htmlfrm是MySQL表结构定义文件,通常frm文件是不会损坏的,但是如果 ... [详细]
  • 本文详细介绍了 Node.js 中 OS 模块的 arch 方法,包括其功能、语法、参数以及返回值,并提供了具体的使用示例。 ... [详细]
  • 数据输入验证与控件绑定方法
    本文提供了多种数据输入验证函数及控件绑定方法的实现代码,包括电话号码、数字、传真、邮政编码、电子邮件和网址的验证,以及报表绑定和自动编号等功能。 ... [详细]
  • 本文详细探讨了Java中HashMap类的hash()方法的工作原理及其重要性,特别是在JDK 7版本中的实现。 ... [详细]
  • 探讨了一个包含纯虚函数的C++代码片段,分析了其中的语法错误及逻辑问题,并提出了修正方案。 ... [详细]
author-avatar
X---CAR
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有