TypeScript - 基本语法
TypeScript - 基本语法
Section titled “TypeScript - 基本语法”TypeScript 语法本质上基于 JavaScript 语法(特别是现代 ECMAScript 标准)。如果您了解 JavaScript,那么您已经了解了大部分 TypeScript 的语法。TypeScript 额外增加了 类型注解(type annotations) 和特定的结构,例如 interface(接口)、enum(枚举)和 namespace(命名空间)。
一个 TypeScript 程序包含:
- Modules(模块): 使用
import和export将代码组织到单独的文件中(推荐方式)。 - Namespaces(命名空间): 一种旧的代码分组方式(现在较少使用)。
- Functions(函数): 可重用代码块。
- Variables(变量): 存储数据的命名容器(使用
let和const)。 - Classes(类): 创建对象的蓝图。
- Interfaces(接口): 定义对象结构的契约。
- Statements and Expressions(语句和表达式): 执行操作的指令。
- Comments(注释): 被编译器忽略的解释性文本。
您的第一个 TypeScript 代码
Section titled “您的第一个 TypeScript 代码”让我们来看一个带有类型注解的简单“Hello World”示例:
// 文件: hello.ts
const message: string = "Hello, TypeScript World!";
function greet(text: string): void { console.log(text);}
greet(message);关键要素:
- 第 3 行:声明了一个常量变量
message,带有显式的类型注解: string,并为其分配了一个字符串值。 - 第 5 行:定义了一个函数
greet,它接受一个类型为string的参数text,并且返回类型为void(表示它不返回任何值)。 - 第 6 行:使用
console.log(一个标准的 JavaScript 函数)打印文本。 - 第 9 行:调用
greet函数,将message变量作为参数传递。
编译和执行 TypeScript
Section titled “编译和执行 TypeScript”TypeScript 代码需要先被编译成 JavaScript,然后才能被浏览器或 Node.js 执行。
- 保存: 将代码保存到扩展名为
.ts的文件中(例如hello.ts)。 - 编译: 打开终端或命令提示符,导航到文件所在的目录,然后运行 TypeScript 编译器(
tsc):tsc hello.ts。这将生成对应的 JavaScript 文件(例如hello.js)。 - 执行: 使用 Node.js 运行生成的 JavaScript 文件:
node hello.js。
编译后的 JavaScript (hello.js):
var message = "Hello, TypeScript World!";function greet(text) { console.log(text);}greet(message);// 注意:确切的输出取决于你的 tsconfig.json target 设置。// 本例假定是 ES3/ES5 等较旧的 target。对于开发,像 ts-node 这样的工具允许您直接执行 .ts 文件而无需单独的编译步骤(ts-node hello.ts)。对于项目,您通常会使用 tsconfig.json 文件来配置编译。
tsconfig.json 和编译器选项
Section titled “tsconfig.json 和编译器选项”对于任何非简单的项目,您都应该在项目根目录中使用 tsconfig.json 文件来配置 TypeScript 编译器。您可以使用 tsc --init 生成一个默认文件。
tsconfig.json 中常用的关键选项:
| 选项 | 描述 |
|---|---|
target | 指定输出 JavaScript 的目标 ECMAScript 版本(例如,"ES2016"、"ESNext")。 |
module | 指定输出代码的模块系统(例如,"CommonJS"、"ES2020"、"NodeNext")。 |
outDir | 将编译后的 JavaScript 输出重定向到指定的目录(例如,"./dist")。 |
rootDir | 指定源 .ts 文件的根目录。 |
strict | 启用一组严格的类型检查选项(推荐用于新项目)。 |
esModuleInterop | 在导入 CommonJS 模块时改善兼容性。 |
sourceMap | 生成对应的 .map 文件,用于调试原始 TypeScript 代码。 |
noImplicitAny | (strict 的一部分)对隐式 any 类型的表达式和声明引发错误。 |
在包含 tsconfig.json 的目录中运行 tsc 将根据这些设置编译项目。
赋予变量、函数、类等的名称。遵循标准的 JavaScript 规则:必须以字母、_ 或 $ 开头,可以包含字母、数字、_、$。区分大小写。不能是保留关键字。
具有特殊含义的保留词(例如,let、const、class、interface、function、if、else、for、while、import、export、type、public、private、protected)。
空白字符和换行
Section titled “空白字符和换行”TypeScript 忽略不属于字符串字面量的空格、制表符和换行符(空白字符)。使用空白字符格式化代码以提高可读性。
大小写敏感性
Section titled “大小写敏感性”TypeScript 区分大小写(variable 和 Variable 是不同的)。
分号(;)在 TypeScript 中(像 JavaScript 一样) technically 是可选的,因为存在自动分号插入(Automatic Semicolon Insertion, ASI)。然而,通常认为在语句末尾包含分号是最佳实践,以避免潜在的歧义并确保一致的代码行为。
用于向代码添加解释性说明,会被编译器忽略。
// 这是单行注释
/* 这是多行注释。*/
/** * 这是 JSDoc 注释,通常用于生成文档。 * @param name 要问候的名称 */function greetWithDoc(name: string): void { console.log(`Hello, ${name}`);}面向对象概念
Section titled “面向对象概念”TypeScript 完全支持面向对象编程(OOP)原则,对 classes、interfaces、继承(extends)和访问修饰符(public、private、protected)提供一流支持。
class Greeter { private greeting: string;
constructor(message: string) { this.greeting = message; }
greet(): void { console.log(this.greeting); }}
const myGreeter = new Greeter("Welcome to OOP in TypeScript!");myGreeter.greet();这些基本语法构成了编写 TypeScript 代码的基础。后续章节将更深入地探讨特定功能,如类型、函数、类、模块等。