有没有办法在JavaScript中强制执行类型?我正在考虑一个预处理器,它使用ActionScript 3或Java编写的输入文件并将其转换为JS.
我不需要一个大的运行时设备,我只需要在我的工作流中引入编译时的想法,并对我的代码运行简单的编译时检查(并且还使用接口).我不需要Java或Flex的API,只需要语法.
还可以根据IDL定义检查标准浏览器功能,但这不是必须的.
虽然我在这个派对上有点迟,但我认为绝对值得一提的是Dart (这是一款Google产品)和TypeScript(这是一款微软产品).
随着应用程序变得更加基于Web,JavaScript正迅速成为一种非常流行的语言.但是,正如您所指出的,JavaScript缺乏类型安全性,还有其他一些东西; 类,接口和包/命名空间/模块.
这就是Dart和TypeScript介入的地方.这些语言本质上是JavaScript的超集.编写Dart或TypeScript代码时,它会编译成符合标准的干净JavaScript.
Dart和TypeScript的好处是它们提供类型安全,接口,类等.因此,您可以编写更清晰,可扩展,可管理的应用程序,这些应用程序仍然可以在浏览器中运行.
作为一名面向Microsoft的程序员,我在TypeScript方面有很多经验,包括在语言开发方面有所积极(你可以在codeplex上找到TypeScript开发的信息)
我目前唯一担心的是TypeScript缺少一些基本功能.似乎当前的一些实现(0.9.0 alpha)有一些同样存在的漏洞,可能会阻止精明的开发人员在此刻使用它(当然会有变化).
我无法评论Dart,因为我只使用了几次,但我对Dart的整体体验很棒!
你应该看看haxe项目.
Haxe是一种使用类型推断的非常好的类型语言(即,您不必编写大量的类型声明),但在编译时强制执行类型正确性.
该语言具有类似javascript的语法,编译器可以为neko虚拟机生成代码,用于javascript,as3,c ++或PHP.