当前位置: 首页 > 面试题库 >

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

上官淮晨
2023-03-14
问题内容

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

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

3年前关闭。

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

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


问题答案:

我最初是在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对这个问题的答案,以获取更多当前的详细信息。



 类似资料:
  • 问题内容: serialVersionUID缺少a时,Eclipse发出警告。 问题答案: 首先,我需要解释什么是序列化。 序列化 允许将对象转换为流,以便通过网络发送该对象,或者保存到文件或保存到DB以供使用。 有一些序列化规则。 仅当对象的类或其超类实现接口时,该对象才可序列化 一个对象是可序列化的(本身实现了接口),即使其超类不是。但是,可序列化类的层次结构中的第一个超类(不实现Serial

  • 本文向大家介绍什么是闭包(closure)为什么要用它相关面试题,主要包含被问及什么是闭包(closure)为什么要用它时的应答技巧和注意事项,需要的朋友参考一下 闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用链域,将函数内部的变量和方法传递到外部。 闭包的特性: 1.函数内再嵌套函数

  • 问题内容: 我了解JSON,但不了解JSONP。Wikipedia上有关JSON的文档是JSONP的最高搜索结果。它说: JSONP或“带填充的JSON”是JSON扩展,其中将前缀指定为调用本身的输入参数。 ??什么电话 这对我来说毫无意义。JSON是一种数据格式。没有电话 在第二个搜索结果是由某些人叫雷米,谁写的这个约JSONP: JSONP是脚本标记注入,它将响应从服务器传递到用户指定的函数。

  • 问题内容: 我对Maven快照的含义以及为什么要构建一个快照感到困惑。 问题答案: Maven中的快照版本尚未发布。 这个想法是,前一个版本(或任何其他版本)完成后,存在一个。那个版本可能会变成 。它基本上是“ 开发中”。这可能接近实际发行版,或相当遥远(0.9例如,发行后立即发行)。 “真实”版本和快照版本之间的区别在于快照可能会得到更新。这意味着今天下载的文件可能不同于昨天或明天下载的文件。

  • 问题内容: 我有一个将对象保存到数据库的EJB。在我看到的一个示例中,一旦保存了此数据(EntityManager.persist),就会调用EntityManager.flush();。为什么我需要这样做?我要保存的对象未附加,以后在该方法中也不会使用。实际上,一旦保存,该方法就会返回,并且我希望资源会被释放。(示例代码也在remove调用上执行此操作。) 问题答案: 调用将强制数据立即被持久保

  • 问题内容: 什么是Unix时间戳?在PHP中,使用日期时,该函数输出一些整数值- 那是什么?我尝试了解这一点,但无法获得满意的答案,尤其是为什么我们需要使用转换日期。 问题答案: 什么是Unix时间戳 简而言之,Unix时间戳是一种跟踪时间(以秒为单位)的方式。此计数从1970年1月1日UTC的Unix Epoch开始。因此, Unix时间戳仅仅是特定日期和Unix Epoch之间的秒数 。还应该