当前位置:  开发笔记 > 编程语言 > 正文

在ECMAScript 6或7中是否支持静态类型?

如何解决《在ECMAScript6或7中是否支持静态类型?》经验,为你挑选了2个好方法。

在ECMAScript 6中是否支持静态类型?ECMAScript 7怎么样?



1> Daniel K. Mu..:

没有.

但是在ECMA-Script Wikipage上有一段关于ECMA-Script 7的变化:

第七版处于发展的早期阶段,但旨在继续ES6的语言改革,代码隔离,效果控制和库/工具启用等主题.提出的新功能包括承诺/并发,数字和数学增强,警卫和商标(静态类型的替代),运算符重载,值类型(类一类数字对象),新记录结构(记录,元组和类型化数组) ,模式匹配和特征.

你可能会感兴趣.



2> Richard Conn..:

虽然这不是ES6规范的一部分,但Closure Compiler在使用其高级编译级别时在JavaScript代码中强制执行JSDoc参数类型注释.使用注释指定类型注释,以便在开发中忽略它们,但是当您为生产版本构建应用程序时,类型不匹配将导致编译器警告或(可选)编译器错误.

强制JSDoc类型注释的示例:

/**
 * @param {string} stringValue
 * @return {number}
 */
function toInt(stringValue) {
  return parseInt(stringValue, 10);
}

var val = toInt("10"); // Good
var val = toInt(false); // NaN in development, but throws an error (optional) 
                        // or prints a warning (default) at build time

作为额外的好处,JSDoc可以使用相同的语法构建API文档.因此,如果您记录代码,它也很方便.

但是警告:对于Closure Compiler进行高级优化魔术,项目中的每个工程师都必须遵循某些严格的编码约定.编译器不能强制执行类型,除非它能够可靠地弄清楚你的代码在做什么,这意味着放弃了一些JavaScript的动态和多余的语法.如果您不遵循它们,错误可能会蔓延到您的应用程序中,并且事后很难诊断它们.大多数流行的JavaScript框架和库都不遵循它们,尽管您有时可以使用Compiler的externs功能解决这个问题.(例如,使用externs支持jQuery.)

因此,如果您确实使用它,请确保彻底测试您的应用程序.我个人甚至不会考虑在Web应用程序上使用此功能,除非它有一个Jenkins构建机器人和接近100%的自动化测试覆盖率,可以在优化对代码运行.这是很多工作,并不适合所有人; 我花了几个月才把我的一个项目升级到那个级别.但就个人而言,我认为值得付出努力.

有关更多信息,请查看Closure Compiler的Advanced Compilation and Externs和Annotating JavaScript.

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有