您能描述一下TypeScript语言是什么吗?
JavaScript或可用库无法做什么,这会让我有理由考虑它?
答案 0 :(得分:1185)
当Typescript还在时,我最初写了这个答案 热现成的印刷机。五年后,这是一个很好的概述,但看看 在Lodewijk's answer以下更深入
TypeScript是JavaScript的超集,主要提供可选的静态类型,类和接口。其中一个重要的好处是,当您键入代码时,IDE可以提供更丰富的环境来发现常见错误。
要了解我的意思,请在语言上观看Microsoft's introductory video。
对于大型JavaScript项目,采用TypeScript可能会产生更强大的软件,同时仍可部署常规JavaScript应用程序。
它是开源的,但如果您使用支持的IDE,则只能在键入时获得聪明的Intellisense。最初,这只是微软的Visual Studio(也在Miguel de Icaza的博客文章中提到)。这些天,other IDEs offer TypeScript support too。
有CoffeeScript,但这确实有不同的用途。恕我直言,CoffeeScript为人类提供了可读性,但TypeScript还通过其可选的静态类型为工具提供了深度可读性(请参阅此recent blog post以获得更多批评)。还有Dart,但这完全取代了JavaScript(尽管它can produce JavaScript code)
举个例子,这里有一些TypeScript(你可以在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;
})();
注意TypeScript如何定义成员变量和类方法参数的类型。这在转换为JavaScript时被删除,但IDE和编译器使用它来发现错误,例如将数字类型传递给构造函数。
它还能够推断未明确声明的类型,例如,它会确定greet()
方法返回一个字符串。
许多浏览器和IDE通过源映射提供直接调试支持。有关详细信息,请参阅此Stack Overflow问题:Debugging TypeScript code with Visual Studio
当Typescript仍然热销时,我最初写了这个答案。有关更多最新详细信息,请查看Lodewijk's answer此问题。
答案 1 :(得分:73)
TypeScript的功能类似于CSS或更少的功能。它们是它的超级集合,这意味着您编写的每个JS代码都是有效的TypeScript代码。另外,您可以使用它添加到语言中的其他好东西,并且转换后的代码将是有效的js。您甚至可以设置您希望生成代码的JS版本。
目前TypeScript是ES2015的超级集合,因此可能是开始学习新js功能并转换为项目所需标准的不错选择。
答案 2 :(得分:37)
"的 TypeScript Fundamentals 强>" - Dan Wahlin 和 John Papa 的Pluralsight视频课程非常好,目前(2016年3月25日)更新以反映TypeScript 1.8 ,Typescript简介。
对我来说,真正好的功能除了智能感知的好处之外,还有类,接口,模块,易于实现AMD,以及在使用IE调用时使用Visual Studio Typescript调试器的可能性。
总结:如果按预期使用,Typescript可以使JavaScript编程更可靠,更容易。与整个SDLC相比,它可以显着提高JavaScript程序员的工作效率。
答案 3 :(得分:11)
所有浏览器支持和预编译的Ecma脚本5(ES5)。 ES6 / ES2015和ES / 2016今年出现了很多变化,所以为了弹出这些变化,两者之间应该关注一下TypeScript。
•TypeScript是类型 - >意味着我们必须定义每个属性和方法的数据类型。如果您了解C#,那么Typescript很容易理解。
•TypeScript的一大优势是我们在投入生产之前就确定了与类型相关的问题。如果存在任何类型不匹配,则允许单元测试失败。