TypeScript 详细介绍:一篇搞懂!

395 阅读3分钟

TypeScript 是 JavaScript 的超集,为 JavaScript 添加了静态类型检查和其他高级特性。它由微软开发,已经成为现代前端开发的标配工具。今天我们就来彻底搞懂 TypeScript 的核心概念和用法!👇


1. TypeScript 是什么?

TypeScript 是一种 静态类型检查 的编程语言,它扩展了 JavaScript 的功能,提供了以下特性:

  1. 静态类型检查:在编译时检查类型错误。
  2. 面向对象编程:支持类、接口、继承等特性。
  3. 工具支持:提供强大的代码补全、重构和导航功能。

2. TypeScript 的核心概念

2.1 类型注解

TypeScript 允许为变量、函数参数和返回值添加类型注解。

示例

let count: number = 0; // 变量类型注解
function add(a: number, b: number): number { // 函数参数和返回值类型注解
  return a + b;
}

2.2 基础类型

TypeScript 支持 JavaScript 的所有基础类型,并扩展了一些新类型。

示例

let isDone: boolean = false;
let age: number = 30;
let name: string = "Alice";
let list: number[] = [1, 2, 3]; // 数组
let tuple: [string, number] = ["Alice", 30]; // 元组
let notSure: any = 4; // 任意类型
let u: undefined = undefined; // undefined
let n: null = null; // null

2.3 接口(Interface)

接口用于定义对象的形状。

示例

interface User {
  name: string;
  age: number;
}

const user: User = {
  name: "Alice",
  age: 30,
};

2.4 类(Class)

TypeScript 支持面向对象编程,提供了类、继承、修饰符等特性。

示例

class Animal {
  name: string;

  constructor(name: string) {
    this.name = name;
  }

  move(distance: number = 0) {
    console.log(`${this.name} moved ${distance}m.`);
  }
}

class Dog extends Animal {
  bark() {
    console.log("Woof! Woof!");
  }
}

const dog = new Dog("Buddy");
dog.bark();
dog.move(10);

2.5 泛型(Generics)

泛型用于创建可重用的组件。

示例

function identity<T>(arg: T): T {
  return arg;
}

let output = identity<string>("Hello");

2.6 枚举(Enum)

枚举用于定义一组命名的常量。

示例

enum Color {
  Red,
  Green,
  Blue,
}

let c: Color = Color.Green;

2.7 联合类型和交叉类型

  • 联合类型:表示一个值可以是多种类型之一。
  • 交叉类型:表示一个值必须同时满足多种类型。

示例

let value: string | number; // 联合类型
value = "Hello";
value = 42;

interface A {
  a: string;
}
interface B {
  b: number;
}
type C = A & B; // 交叉类型
const obj: C = { a: "Hello", b: 42 };

3. TypeScript 的高级特性

3.1 类型推断

TypeScript 可以根据上下文自动推断变量的类型。

示例

let x = 3; // TypeScript 推断 x 的类型为 number

3.2 类型断言

类型断言用于告诉 TypeScript 某个值的具体类型。

示例

let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;

3.3 装饰器(Decorators)

装饰器用于扩展类、方法、属性或参数的行为。

示例

function sealed(constructor: Function) {
  Object.seal(constructor);
  Object.seal(constructor.prototype);
}

@sealed
class Greeter {
  greeting: string;
  constructor(message: string) {
    this.greeting = message;
  }
  greet() {
    return "Hello, " + this.greeting;
  }
}

3.4 命名空间(Namespace)

命名空间用于组织代码,避免全局命名冲突。

示例

namespace Validation {
  export interface StringValidator {
    isAcceptable(s: string): boolean;
  }
}

4. TypeScript 的工具支持

4.1 编译器

TypeScript 提供了 tsc 编译器,用于将 TypeScript 代码编译为 JavaScript。

示例

tsc app.ts

4.2 配置文件

通过 tsconfig.json 文件配置 TypeScript 编译选项。

示例

{
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "strict": true
  }
}

4.3 IDE 支持

TypeScript 提供了强大的 IDE 支持,包括代码补全、重构、导航等功能。


5. 总结

  • TypeScript:是 JavaScript 的超集,添加了静态类型检查和其他高级特性。
  • 核心概念:类型注解、接口、类、泛型、枚举、联合类型、交叉类型。
  • 高级特性:类型推断、类型断言、装饰器、命名空间。
  • 工具支持:编译器、配置文件、IDE 支持。

如果你对 TypeScript 还有疑问,欢迎在评论区讨论!💬