什么是TypeScript,为什么我会用它代替JavaScript?

时间:2012-10-02 16:37:59

标签: javascript typescript

您能描述一下TypeScript语言是什么吗?

JavaScript或可用库无法做什么,这会让我有理由考虑它?

4 个答案:

答案 0 :(得分:1185)

  

当Typescript还在时,我最初写了这个答案   热现成的印刷机。五年后,这是一个很好的概述,但看看   在Lodewijk's answer以下更深入​​

1000英尺视图......

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()方法返回一个字符串。

调试Typescript

许多浏览器和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的一大优势是我们在投入生产之前就确定了与类型相关的问题。如果存在任何类型不匹配,则允许单元测试失败。