小编给大家分享一下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有什么改进”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!