TypeScript(简称 TS)是 JavaScript 的 超集(Superset),由微软开发和维护,于 2012 年 10 月首次公开发布。TypeScript 在 JavaScript 的基础上添加了 可选的静态类型系统,并编译为纯 JavaScript 运行。
TypeScript 的核心定位是 "为大型 JavaScript 项目提供类型安全"。它提供了:
随着 Web 应用规模越来越大,JavaScript 的动态类型让大型项目的维护变得困难。微软的 Anders Hejlsberg(C# 之父)领导开发了 TypeScript,目标是为 JavaScript 添加 类型系统和工具支持,同时保持与 JavaScript 的完全兼容。
let name: string = "TypeScript";tsc file.ts 编译为 JavaScripttsconfig.json// TypeScript 示例
const greeting: string = "Hello, TypeScript!";
const year: number = 2012;
function greet(name: string): string {
return `Hello, ${name}!`;
}
console.log(greet("World"));
string、number、boolean、voidnumber[] 或 Array<number>[string, number]enum Color { Red, Green, Blue }let value: any = "anything";string | numberA & B"success" | "error"interface Person { name: string; age: number; }age?: numberreadonly id: number[key: string]: anyinterface Greet { (name: string): void; }interface Student extends Person { school: string; }type ID = string | number;type Status = "success" | "error" | "loading";type Admin = Person & { role: string; };type Box<T> = { value: T; };class Person { name: string; constructor(name: string) { this.name = name; } }public、protected、privatereadonlyabstract classclass Student implements Personconstructor(public name: string) {}function identity<T>(value: T): T { return value; }interface Box<T> { value: T; }class Queue<T> { private data: T[] = []; push(item: T) { this.data.push(item); } }<T extends Lengthwise><T = string>type Readonly<T> = { readonly [P in keyof T]: T[P]; };T extends U ? X : Y`${"GET" | "POST"}_${string}`// 高级类型示例
type User = {
id: number;
name: string;
email: string;
age?: number;
};
// Partial:所有属性变为可选
type PartialUser = Partial<User>;
// Pick:选择部分属性
type UserInfo = Pick<User, "id" | "name">;
// Omit:排除部分属性
type UserWithoutEmail = Omit<User, "email">;
// 映射类型
type ReadonlyUser = Readonly<User>;
// 条件类型
type IsString<T> = T extends string ? true : false;
if (typeof value === "string")if (value instanceof Date)if ("name" in person)function isString(value: any): value is string { return typeof value === "string"; }import / exportnamespace MyNamespace { export const value = 42; }/// <reference types="..." />.d.ts 文件allowJs 选项混合 JS 和 TS 文件.d.ts:只包含类型定义npm install @types/reactTypeScript 在编译期捕获类型错误,减少运行时 Bug。据统计,TypeScript 可以捕获 15%-30% 的潜在错误。
类型信息让 IDE 提供智能提示、自动补全、安全重构、跳转到定义等功能,大幅提升开发效率。
类型注解让代码更易读、更易理解。接手别人的 TypeScript 项目时,类型系统帮助理解数据流。
任何 JavaScript 库都可以在 TypeScript 中使用,通过 @types 获得类型支持。
TypeScript 总是最先支持最新的 JS 标准特性,并通过编译选项兼容旧浏览器。
任何超过 1 万行代码的 JavaScript 项目,都应该考虑使用 TypeScript。
先掌握 JavaScript 基础(ES6+ 语法、函数、对象、数组、Promise)
基本类型、接口、类型别名、联合类型、交叉类型
泛型、映射类型、条件类型、模板字面量类型、类型守卫
tsconfig.json 配置、@types 使用、与 React/Vue/NestJS 集成
TypeScript 是 JavaScript 的"安全带"。
它没有改变 JavaScript 的运行方式,而是为开发者提供了 类型安全和工具支持。TypeScript 让 JavaScript 从"玩具语言"成长为企业级应用的可靠选择。
如果你在开发任何 超过 1000 行代码的 JavaScript 项目,强烈建议使用 TypeScript。类型系统的投入会在项目维护阶段得到 10 倍的回报。
"TypeScript 是 JavaScript 开发者对自己负责的工具。" 📝
—— 技术社区评价