学习TypeScript与JavaScript相比的优点和缺点

185 阅读3分钟

在这篇文章中,我们将看一下TypeScript与JavaScript相比的优点和缺点。

TypeScript

TypeScript是JavaScript的一个超集,用于制作企业应用程序。有时也被称为可扩展的JavaScript

优点

类型安全

我认为我自己和很多其他开发者最初倾向于使用JavaScript的原因之一,不仅是因为它是网络语言,有很多非常酷的东西,而且是因为我们对Java等语言感到厌烦。

当你刚刚开始编程和小规模编程的时候,类型可能是一个巨大的麻烦,让你的东西工作。

当你在你的职业生涯中,承担更多的责任,并在更大的复杂领域问题上工作时,你很快就需要使用对象来表达自己的能力。

而在JavaScript中,有时你必须做一些有趣的事情来确保你在运行时遇到的对象实际上是你想要的类型和形状

JavaScript-r们习惯于用Joi验证Duck-typing来解决这类问题。

TypeScript让这一切变得更加简洁和容易。仅仅是编程语言中接口的出现,就为我个人节省了大量的时间。

更好的可表达性

能够向你的团队成员表达对象可以采取什么形式,可以做什么,不可以做什么,这是面向对象编程和良好的软件设计的一个基本要求。

对于JavaScript,我们有点过于依赖良好的类和变量命名来描述意图。

TypeScript允许你使用接口抽象类类型(+许多不同类型的味道,如联合类型条件类型),以表示你的设计意图,并确保你和你的团队遵守事物应该被使用的契约。

你可以选择加入类型

TypeScript的优点之一是能够选择使用类型。

这意味着你可以通过引用其他对象来使你的类型非常具体...

class User {
  public name: Username;
  public email: Email;

  constructor (name: Username, email: Email) {
    this.name = name;
    this.email = email;
  }
}

或者通过使用基元而不那么具体...

class User {
  public name: string;
  public email: string;

  constructor (name: string, email: string) {
    this.name = name;
    this.email = email;
  }
}

或者你说去它的,把它当作JavaScript...

class User {
  public name: any;
  public email: any;

  constructor (name: any, email: any) {
    this.name = name;
    this.email = email;
  }
}

有时,特别是在处理完全由JavaScript编写的包或遗留模块的代码时,我会用any 类型来引用它。

缺点

需要增加构建步骤

为了将TypeScript编译成JavaScript而需要的构建步骤是我没有在其他资源中经常看到的。

一般来说,TypeScript为你节省了大量的开销,这个额外的开销并不是太坏的交易,但它确实意味着你必须以不同的方式去完成以下任务。

运行一个单一的TypeScript文件

你会想做npm run install --save-dev ts-node ,并使用ts-node 来运行一个单一的文件,如。

ts-node script.ts

在Visual Studio Code中调试TypeScript代码

你要设置一个构建任务,在执行你的启动脚本之前先编译你的TypeScript,以便在生成的JavaScript上运行调试器。

你必须要学习它

像任何东西一样,你必须花一些时间来学习它。时间的投入总是让人感到无奈。

但对我来说,我发现,鉴于TypeScript与Java非常相似,而且我最初就是用它来学习编程的,所以我在几个小时内就能用TypeScript变得富有成效。

对于面向对象编程的新手来说,它可能会有一点挑战性,但最终,95%的区别是语法上的。