我最初写这个答案的时候,Typescript 还没写完
TypeScript是JavaScript的超集,主要提供可选的静态类型、类和接口.最大的好处之一是使IDE能够为发现常见错误提供更丰富的环境.
要想了解我的意思,请看《语言Microsoft's introductory video》.
对于大型JavaScript项目,采用TypeScript可能会产生更健壮的软件,同时仍然可以部署在常规JavaScript应用程序运行的地方.
它是开源的,但只有在使用受支持的IDE时,才能在键入时获得智能感知.最初,这只是微软的VisualStudio(也在Miguel de Icaza的博客文章中提到).现在,other IDEs offer TypeScript support too.
有CoffeeScript个,但这真的有不同的用途.据我所知,CoffeeScript为人类提供了可读性,但TypeScript也通过其可选的静态类型为tools提供了深度可读性(更多 comments 请参见本recent blog post).还有Dart个,但这是对JavaScript的完全替代(尽管是can produce JavaScript code个)
例如,这里有一些打字脚本(你可以在TypeScript Playground中使用)
class Greeter {
greeting: string;
constructor (message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
下面是它将产生的JavaScript
var Greeter = (function () {
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.greet = function () {
return "Hello, " + this.greeting;
};
return Greeter;
})();
请注意类型脚本是如何定义成员变量和类方法参数的类型的.它在转换为JavaScript时被删除,但被IDE和编译器用来发现错误,比如将数值类型传递给构造函数.
它还能够推断未显式声明的类型,例如,它将确定greet()
方法返回一个字符串.
许多浏览器和IDE通过源代码映射提供直接调试支持.有关更多详细信息,请参阅此堆栈溢出问题:调试Typescript code with Visual Studio
我最初写这个答案的时候,Typescript 还在热印.有关此问题的更多最新细节,请查看Lodewijk's answer.