TypeScript 基本结构
一份 TypeScript 程序通常由注释、导入、类型与变量声明、函数/类定义以及执行语句等部分组成。无论脚本还是大型工程,都遵循"先声明、后使用、有入口"的骨架。下面用一个可运行示例逐段拆解。
结构总览
典型文件从上到下依次包含:
- 注释:说明文件用途。
- import 导入:引入其他模块的功能。
- 类型与接口声明:定义数据结构。
- 变量与常量声明:存放数据。
- 函数与类定义:封装可复用逻辑。
- 执行语句:调用函数并输出结果。
最小可运行程序
// 1. 注释:演示 TS 基本结构
// 2. 导入(示例无外部依赖,故省略)
// 3. 类型定义
type User = { name: string; age: number };
// 4. 常量声明
const user: User = { name: "张三", age: 20 };
// 5. 函数定义
function greet(u: User): string {
return "你好," + u.name;
}
// 6. 执行入口
console.log(greet(user)); // 输出:你好,张三
保存为 structure.ts 后执行 tsc structure.ts && node structure.js 即可看到输出。
导入与导出结构
多文件项目靠 import/export 串联,可导出类型、常量或函数:
// types.ts —— 定义并导出
export interface Point { x: number; y: number }
export const origin: Point = { x: 0, y: 0 };
// main.ts —— 导入使用
import { Point, origin } from "./types";
const p: Point = origin;
console.log(p.x, p.y); // 输出:0 0
顶层语句与块结构
代码既可在顶层直接执行,也可放入 {} 块或函数内;块级变量仅块内可见:
let total: number = 0; // 顶层变量,全文件可见
function add(n: number): void {
total += n; // 函数内修改顶层变量
}
{ let inner: number = 5; console.log(inner); } // 输出:5
add(10);
console.log(total); // 输出:10
程序的入口形式
- Node.js 脚本:文件顶层顺序执行,习惯用 main() 函数收拢入口逻辑。
- 浏览器页面:HTML 用
<script>引入编译后的 JS,由事件回调驱动。 - 框架应用:由挂载代码启动,如 React 的 createRoot().render(...)。
编译产物的对应关系
类型注解在编译后被擦除,逻辑结构原样保留:
// source.ts
let msg: string = "hi";
console.log(msg);
编译为 source.js 后大致如下:
var msg = "hi";
console.log(msg); // 输出:hi
小结
看懂任何 TS 文件都可按结构拆解:顶部是导入与声明,中部是函数与类,尾部是执行入口;多文件用 export/import 串联,经 tsc 编译即可得到可运行的 JS。