使用 TypeScript

什么是 TypeScript

TypeScript 是由 Microsoft 维护和开发的一个非常流行的开源语言,它受到全世界许多软件开发者的喜爱和使用。

基本上,它是 JavaScript 的超集,为语言增加了新的功能。 最值得注意的新功能是静态类型定义,这是普通 JavaScript 中所没有的。 多亏于类型,我们可以声明期望的参数类型,以及在函数中确切返回的参数,或者所创建对象的确切是什么。 TypeScript 是一个非常强大的工具,它在 JavaScript 项目中开辟了可能性的新世界。 通过在代码交付之前防止大量错误,它使我们的代码更安全,更健壮 - 它会在编写代码时发现问题,并与 Visual Studio Code 这样的代码编辑器完美集成。

稍后再讨论 TypeScript 的其他优点,现在来看一些示例!

示例

看一下下面的代码片段,然后再一起拆解它们:


 

TScopy

type User = {

name: string;

age: number;

};

function isAdult(user: User): boolean {

return user.age >= 18;

}

const justine: User = {

name: 'Justine',

age: 23,

};

const isJustineAnAdult: boolean = isAdult(justine);

第一部分带有 type 关键字的是负责声明代表用户的对象的自定义类型。 然后,我们利用这个新创建的类型来创建函数 isAdult,该函数接受一个类型为 User 的参数并返回 boolean。 之后,我们创建 justine,这是我们的示例数据,可用于调用先前定义的函数。 最后,我们用 justine 是否成年的信息来创建新的变量。

您还应该了解有关此示例的其他信息。 首先,如果我们不遵守声明的类型,TypeScript 会警告我们出现问题并防止滥用。 其次,并非所有内容都必须显式地声明类型 - TypeScript 非常聪明,可以为我们推断类型。 例如,即使我们没有显式地声明 isJustineAnAdult 的类型,其类型也会为 boolean;即使我们未声明变量为 User 类型,justine 仍是函数的有效参数。

好的,我们已经有一些 TypeScript 代码。 现在我们如何运行它?

首先要做的是在我们的项目中安装 TypeScript:


 

BASHcopy

npm install typescript

现在,我们可以在终端中使用 tsc 命令将其编译为 JavaScript。 我们开始做吧!

假设我们的文件名为 example.ts,则该命令如下所示:


 

BASHcopy

tsc example.ts

此命令会生成一个名为 example.js 的新文件,我们可以使用 Node.js 运行它。 现在,我们知道如何编译和运行 TypeScript 代码,让我们看看 TypeScript 防止错误的功能!

这是我们修改了的代码:


 

TScopy

type User = {

name: string;

age: number;

};

function isAdult(user: User): boolean {

return user.age >= 18;

}

const justine: User = {

name: 'Justine',

age: 'Secret!',

};

const isJustineAnAdult: string = isAdult(justine, "I shouldn't be here!");

这是 TypeScript 对此要说的:


 

TScopy

example.ts:12:3 - error TS2322: Type 'string' is not assignable to type 'number'.

12 age: "Secret!",

~~~

example.ts:3:3

3 age: number;

~~~

The expected type comes from property 'age' which is declared here on type 'User'

example.ts:15:7 - error TS2322: Type 'boolean' is not assignable to type 'string'.

15 const isJustineAnAdult: string = isAdult(justine, "I shouldn't be here!");

~~~~~~~~~~~~~~~~

example.ts:15:51 - error TS2554: Expected 1 arguments, but got 2.

15 const isJustineAnAdult: string = isAdult(justine, "I shouldn't be here!");

~~~~~~~~~~~~~~~~~~~~~~

Found 3 errors.

如你所见,TypeScript 成功阻止了我们交付可能无法正常工作的代码。 这好极了!

有关 TypeScript 的更多信息

TypeScript 提供了很多其他很棒的机制,例如接口、类、实用类型等。 另外,在较大型的项目中,你还可以在单独的文件中声明 TypeScript 编译器的配置,并细化地调整其工作方式、严格程度、以及将编译后的文件存储在何处。 你可以在 TypeScript 官方文档中阅读有关所有这些出色功能的更多信息。

TypeScript 的其他值得一提的好处有,它可以逐步采用,这有助于使代码更具可读性和可理解性,并且允许开发者在为较旧的 Node.js 版本提供代码时使用现代的语言功能。

Node.js 世界中的 TypeScript

TypeScript 在 Node.js 世界中已经建立了良好的基础,并被许多公司、开源项目、工具和框架所使用。 使用 TypeScript 的一些开源项目的知名示例有:

  • NestJS - 健壮且功能齐全的框架,可轻松愉快地创建可扩展且结构合理的系统。
  • TypeORM - 伟大的 ORM,受其他语言(如 Hibernate、Doctrine 或 Entity Framework)的其他知名工具的影响。
  • RxJS - 广泛用于反应式编程的库。