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 的其他值得一提的好处有,它可以逐步采用,这有助于使代码更具可读性和可理解性,并且允许开发者在为较旧的 Node.js 版本提供代码时使用现代的语言功能。
TypeScript 在 Node.js 世界中已经建立了良好的基础,并被许多公司、开源项目、工具和框架所使用。 使用 TypeScript 的一些开源项目的知名示例有: