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

新手上路,请多包涵

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

JavaScript 或可用库不能做什么,这让我有理由考虑它?

原文由 Mohammed Thabet 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 532
2 个回答

我最初在 TypeScript 还很热门的时候写了这个答案。五年后,这是一个不错的概述,但请查看下面 Lodewijk 的答案 以获得更深入的了解

1000英尺的视野…

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

要了解我的意思,请观看 Microsoft 的语言介绍视频

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

它是开源的,但如果您使用受支持的 IDE,您只能在键入时获得智能 Intellisense。最初,这只是微软的 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 通过源映射提供直接调试支持。有关更多详细信息,请参阅此 Stack Overflow 问题: 使用 Visual Studio 调试 TypeScript 代码

想知道更多?

我最初在 TypeScript 还很热门的时候写了这个答案。查看 Lodewijk 对这个问题的回答,了解更多最新细节。

原文由 Paul Dixon 发布,翻译遵循 CC BY-SA 4.0 许可协议

TypeScript 所做的事情类似于 less 或 sass 对 CSS 所做的事情。它们是它的超级集合,这意味着您编写的每个 JS 代码都是有效的 TypeScript 代码。另外,您可以使用它添加到语言中的其他好东西,并且转译的代码将是有效的 js。你甚至可以设置你想要生成代码的 JS 版本。

目前 TypeScript 是 ES2015 的超级集,因此可能是开始学习新的 js 功能并转换为项目所需标准的不错选择。

原文由 lebobbi 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题