TypeScript(TS)是 JavaScript(JS)的超集,在语法和功能上完全兼容 JS,但引入了静态类型系统和更多面向工程化的特性。以下是学习 TS 时需要重点掌握的内容。

类型系统的基础

TS 的核心是静态类型检查,开发者需要明确变量、函数参数和返回值的类型。

  • 基本类型stringnumberbooleannullundefined 等,语法为 let name: string = "Alice"
  • 联合类型:通过 | 组合多种类型,如 let id: string | number
  • 类型推断:TS 能自动推断未显式标注的类型,如 let age = 30 会被推断为 number
接口与类型别名

TS 通过 interfacetype 定义复杂数据结构:

interface User {
  id: number;
  name: string;
  isAdmin?: boolean; // 可选属性
}
type Point = { x: number; y: number };

泛型的使用

泛型提供类型复用能力,常见于函数和容器类:

function identity<T>(arg: T): T {
  return arg;
}
const arr: Array<number> = [1, 2, 3];

类与面向对象增强

TS 扩展了 JS 的类语法,支持访问修饰符和抽象类:

class Person {
  private age: number; // 私有属性
  constructor(public name: string) {} // 简化成员初始化
}

模块与类型声明

TS 使用 ES Module 语法,同时支持类型声明文件(.d.ts):

// 导入类型
import { User } from "./types";
// 声明外部模块类型
declare module "lodash" {
  export function shuffle<T>(arr: T[]): T[];
}

工具类型与高级特性
  • 工具类型:如 Partial<T>Pick<T, K> 等,用于动态生成类型。
  • 装饰器:通过 @decorator 语法扩展类或方法(需配置实验性选项)。
  • 命名空间:早期模块化方案,现代项目更推荐使用模块化。
工程化配置

TS 项目需配置 tsconfig.json,关键选项包括:

  • target:编译目标 JS 版本(如 ES6)。
  • strict:是否启用严格类型检查。
  • moduleResolution:模块解析策略(如 Node)。
常见问题与避坑
  • 类型断言:通过 as<Type>语法 强制转换类型,需谨慎使用。
  • 类型守卫:用 typeofinstanceof 或自定义函数缩小类型范围。
  • 第三方库类型:通过 @types/包名 安装类型定义,或手动声明。
学习路径建议
  1. 掌握基础类型和类型标注语法。
  2. 熟悉接口、泛型等进阶特性。
  3. 实践配置 TS 项目并集成工具链(如 Webpack、Babel)。
  4. 阅读开源项目代码,学习类型设计模式。

TS 的核心优势在于通过类型系统提升代码健壮性和可维护性,同时保留 JS 的灵活性。逐步适应类型思维是关键。

更多推荐