一尘不染

什么是TypeScript?为什么我要用它代替JavaScript?[关闭]

javascript

已关闭 。这个问题需要更加集中。它当前不接受答案。


想改善这个问题吗? 更新问题,使其仅通过编辑此帖子来关注一个问题。

3年前关闭。

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

JavaScript或可用的库无法执行的工作是什么,这使我有理由考虑?


阅读 218

收藏
2020-04-25

共1个答案

一尘不染

我最初是在TypeScript仍然热销时写这个答案的。五年后,这是一个不错的概述,但请查看以下Lodewijk的答案以获取更多深度

1000英尺查看…

TypeScript是JavaScript的超集,主要提供可选的静态类型,类和接口。最大的好处之一是使IDE能够提供更丰富的环境,以便
在键入代码时 发现常见错误。

要了解我的意思,请观看有关该语言的Microsoft入门视频

对于大型JavaScript项目,采用TypeScript可能会导致软件更强大,同时仍可以在运行常规JavaScript应用程序的地方进行部署。

它是开源的,但是如果您使用受支持的IDE,则只有在键入时才获得聪明的Intellisense。最初,这只是Microsoft的Visual
Studio(也在Miguel de
Icaza的
博客文章中指出)。如今其他IDE也提供TypeScript支持

还有其他类似的技术吗?

CoffeeScript,但这确实有不同的用途。恕我直言,CoffeeScript为人类提供了可读性,但TypeScript还通过其可选的静态类型为
工具
提供了深层的可读性(有关更多批评,请参阅此最新博客文章)。也有Dart,但可以完全替代JavaScript(尽管它可以产生JavaScript代码

例如,这是一些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通过Sourcemap提供直接调试支持。有关更多详细信息,请参见此堆栈溢出问题:使用Visual
Studio调试TypeScript代码

想知道更多?

我最初是在TypeScript仍然热销时写这个答案的。查看Lodewijk对这个问题的答案,以获取更多当前的详细信息。

2020-04-25