LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

【Web开发】五分钟上手TypeScript

admin
2026年1月1日 11:25 本文热度 359

整个TypeScript官方文档分为这么一些模块:

  1. 快速开始

  2. 手册

  3. 参考文档

  4. 模块参考

  5. 教程

  6. 更新内容

  7. 声明文件

  8. JavaScript

  9. 项目

原文链接:https://www.typescriptlang.org/docs/handbook/typescript-tooling-in-5-minutes.html

文档位置:快速开始

翻译:谢杰

审校:谢杰

让我们从构建一个简单的 TypeScript Web 应用开始。


安装TypeScript

将TypeScript添加到项目中主要有两种方式:

  • 通过 npm(Node.js 的包管理器)

  • 安装 TypeScript 的 Visual Studio 插件

Visual Studio 2017 和 Visual Studio 2015 Update3 默认包含 TypeScript 的语言支持,但不包含 TypeScript 编译器 tsc。如果你没有在安装 Visual Studio 时一并安装 TypeScript,仍然可以单独下载。

对于使用 npm 的用户:

 npm install -g typescript


创建你的第一个TypeScript文件

打开你的编辑器,在greeter.ts文件中写下如下的JS代码:

function greeter(person) {  return "Hello, " + person;}
let user = "Jane User";
document.body.textContent = greeter(user);


编译你的代码

我们使用了 .ts 扩展名,但这段代码其实就是普通的 JavaScript。你甚至可以直接从现有的 JavaScript 应用中复制粘贴这段代码过来。

在命令行中运行 TypeScript 编译器:

tsc greeter.ts

编译结果会生成一个名为 greeter.js 的文件,里面的内容就是你输入的那段 JavaScript。

现在我们已经成功在 JavaScript 应用中运行起 TypeScript 了!

接下来我们可以开始利用 TypeScript 提供的一些新特性。比如,给函数参数 person 添加一个 : string 类型注解,如下所示:

function greeter(person: string) {  return "Hello, " + person;}
let user = "Jane User";
document.body.textContent = greeter(user);


类型注解

在 TypeScript 中,类型注解是一种轻量级的方式,用于记录函数或变量的预期类型契约。在这个例子中,我们希望 greeter 函数接收一个字符串类型的参数。因此可以为该参数添加类型注解。

比如尝试把对 greeter 的调用改为传入一个数组:

function greeter(person: string) {  return "Hello, " + person;}
let user = [012];
document.body.textContent = greeter(user);

你会看到如下报错:

Argument of type 'number[]' is not assignable to parameter of type 'string'.

试着重新编译,你现在会看到一个错误提示:

error TS2345: Argument of type 'number[]' is not assignable to parameter of type 'string'.

类似地,如果你尝试调用 greeter 时不传入任何参数,TypeScript 也会提示你调用函数时传入的参数数量不正确。

在这两种情况下,TypeScript 都能够基于你的代码结构以及你提供的类型注解进行静态分析。

需要注意的是,尽管存在错误,greeter.js 文件仍然会被生成。也就是说,即使代码中有错误,你仍然可以使用 TypeScript。不过在这种情况下,TypeScript 会提前警告你:这段代码在运行时可能不会按照预期工作。


接口

我们继续扩展示例代码。这里我们使用了一个接口,用于描述包含 firstName 和 lastName 字段的对象。

在 TypeScript 中,如果两个类型的内部结构兼容,那么它们就是兼容的。这意味着我们只要对象的结构符合接口的定义,就可以视为实现了该接口,而不需要显式使用 implements 关键字。

interface Person {  firstNamestring;  lastNamestring;}
function greeter(personPerson) {  return "Hello, " + person.firstName + " " + person.lastName;}
let user = { firstName"Jane"lastName"User" };
document.body.textContent = greeter(user);

在这个例子中,user 对象具有 firstName 和 lastName 两个属性,因此它符合 Person 接口的结构要求,可以直接作为参数传给 greeter 函数。


最后,我们再通过类(class)对示例进行一次扩展。TypeScript 支持 JavaScript 中的现代特性,比如基于类的面向对象编程。

下面我们创建一个 Student 类,它包含一个构造函数和几个 public 字段。可以看到,类和接口可以很好地协同使用,让开发者根据需要选择合适的抽象层级。

另外需要注意的是,构造函数中参数前使用 public 关键字是一种简写形式,TypeScript 会自动为这些参数创建同名的属性。

class Student {  fullNamestring;  constructor(    public firstNamestring,    public middleInitialstring,    public lastNamestring  ) {    this.fullName = firstName + " " + middleInitial + " " + lastName;  }}
interface Person {  firstNamestring;  lastNamestring;}
function greeter(personPerson) {  return "Hello, " + person.firstName + " " + person.lastName;}
let user = new Student("Jane""M.""User");
document.body.textContent = greeter(user);

试着重新运行:

tsc greeter.ts

你会看到生成的 JavaScript 与之前的代码几乎一致。TypeScript 中的类,其实只是对 JavaScript 中基于原型的面向对象编程的一种语法糖封装。


运行你的TypeScript Web应用

现在,在 greeter.html 中输入以下内容:

<!DOCTYPE html><html>  <head>    <title>TypeScript Greeter</title>  </head>  <body>    <script src="greeter.js"></script>  </body></html>

在浏览器中打开 greeter.html,即可运行你的第一个简单的 TypeScript Web 应用!

可选操作:在 Visual Studio 中打开 greeter.ts,或者将代码复制到 TypeScript Playground 中。你可以将鼠标悬停在标识符上查看它们的类型。在某些情况下,这些类型会被自动推断出来。

重新输入最后一行代码时,编辑器会根据 DOM 元素的类型提供自动补全列表和参数提示。将光标放在对 greeter 函数的引用上,按下 F12 可以跳转到函数定义。你也可以右键点击某个符号,使用重构功能对其重命名。

这些类型信息和工具配合使用,使得在应用级规模下使用 JavaScript 变得更加高效。更多 TypeScript 能力示例,请参见官网的 Samples 部分。


译者解读:

如果你已经看过不少TypeScript相关文章,那么这篇官方文档一开始可能会让你觉得“太简单了”。

但事实恰恰相反:它是一篇极度经典的TypeScript入门设计样本。这篇文档的核心价值在于,它没有从“TypeScript 很强、很高级”这种叙事切入,而是强调一件关键的事:

「TypeScript 的真正定位不是一门新的语言,而是给JavaScript加约束的工具链」

在整个文章中,你会看到几个刻意设计的节奏:


第一步:让你把TypeScript当JavaScript用

文章开头故意让你写一段没有任何类型的代码。因为TypeScript最重要的理念之一是:

「你不需要立刻理解所有类型系统,也能开始写 TS」

这能大幅降低学习成本,让入门者不会因为“噢天啊我要学一堆新语法”而退缩。


第二步:再慢慢加一点点类型

文章并没有一上来讲什么类型推断、联合类型、可选属性……而是从一个最常见、最自然的场景切入:给函数参数加一个 : string

这种设计目的很明确:

  • 看得懂

  • 好解释

  • 编译器能立刻给出错误提示

让你马上体验到TypeScript的“即时反馈”价值,这也是让无数人坚持使用TypeScript的最大理由。


第三步:让你意识到 TS 是「结构化类型系统」

文章接着讲接口,但注意它并没有讲复杂的“接口继承”、“泛型接口”、“索引签名”等内容。它只展示最核心的一点:

「只要结构一样,就能当成同一种类型使用」

这就是TypeScript的灵魂:结构化类型。理解了这一点,就能明白为何:

  • TypeScript 和 Java/C# 那种“名义类型”完全不同

  • 为什么一个 { firstName, lastName } 的普通对象就能当作 Person 接口

  • 为什么很多JavaScript库迁移到TypeScript时几乎不用改动

这也间接说明:TypeScript并没有“强推 OOP 思维”,它依然是 JS 的那套结构化哲学。


第四步:展示 class,但不推行 class

最后的 class 示例非常“克制”:

  • 只写构造器

  • 只写几个属性

  • 故意不出现继承、多态等“重量级 OOP 概念”

这是因为TypeScript官方始终在强调:TypeScript不是为了让你写“更像 Java 的 JS”。它只是忠实支持JavaScript的新语法。官方文档的示例避免推崇 OOP,而是告诉你:不论是 interface 还是 class,你都可以用,使得TypeScript更像你需要的那种语言。


“五分钟上手”真正想传达的,是 TS 的思维方式

  • TypeScript = JavaScript + 静态类型系统:不是 “JavaScript替代品”,不是“另起炉灶的新语言”。

  • 编译结果永远是 JS:你写的不管多fancy,最后都要编译成浏览器或 Node 能跑的 JS。

  • 类型系统是给开发体验服务的:不是为了把语言“写得更复杂”,而是为了:

  • 捕获 bug

  • 让 IDE 更聪明

  • 写大型项目更稳定

  • 增强代码表达能力

这篇五分钟教程本质上就是想让你慢慢体会到:

  1. TypeScript并不会改变你写JavaScript的方式,只会让你写得更放心。

  2. 你其实已经会写TypeScript 了,只是还没打开它的全部能力而已。

  3. 从“能用”到“好用”,中间差的就是你是否愿意一步步理解TypeScript的类型系统。


阅读原文:原文链接


该文章在 2026/1/4 10:44:12 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved