TypeScript 速成技巧

时间:2025-04-04 20:11:26

TypeScript 速成技巧

TypeScript 是 JavaScript 的超集,添加了静态类型选项。它可以帮助开发者编写更清晰、更易于维护的代码。本文将介绍一些实用的 TypeScript 速成技巧,帮助你更快地掌握这门语言。

1. 类型注解

TypeScript 中的类型注解是一种为变量、函数参数和返回值指定类型的方式。这有助于编译器理解代码的意图,并在编译时提供类型检查

function greet(name: string): string {
  return 'Hello, ' + name;
}
  • 1
  • 2
  • 3

在上面的例子中,我们为 greet 函数的参数 name 指定了类型 string,并为函数返回值也指定了类型 string

2. 接口

接口是 TypeScript 中用于定义对象形状的一种方式。它可以帮助你对对象的结构进行描述,确保对象满足特定的形状。

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

function greet(person: Person): string {
  return 'Hello, ' + ;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在上面的例子中,我们定义了一个名为 Person 的接口,它包含 nameage 两个属性。然后我们在 greet 函数中使用了这个接口作为参数类型。

3. 泛型

泛型是 TypeScript 中用于创建可重用组件的一种方式。它允许你在定义函数、接口或类时使用类型参数,这样就可以在调用时指定具体的类型。

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

let output = identity<string>("myString");  // output 类型为 'string'
  • 1
  • 2
  • 3
  • 4
  • 5

在上面的例子中,我们定义了一个名为 identity 的泛型函数,它接受一个类型参数 T。在调用 identity 函数时,我们指定了类型参数为 string,因此返回值的类型也是 string

4. 联合类型和类型别名

联合类型允许你指定一个变量可以是多个类型中的一个。类型别名则是为一个类型起一个新名字。

type StringOrNumber = string | number;

function formatValue(value: StringOrNumber): string {
  return typeof value === 'string' ? value : ();
}
  • 1
  • 2
  • 3
  • 4
  • 5

在上面的例子中,我们定义了一个名为 StringOrNumber 的类型别名,它可以是 stringnumber 类型。然后我们在 formatValue 函数中使用了这个类型别名作为参数类型。

5. 枚举

枚举是 TypeScript 中用于创建命名的常量集合的一种方式。它可以帮助你为一组相关的数值或字符串创建更具有可读性的名称。

enum Color {
  Red,
  Green,
  Blue
}

let c: Color = ;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在上面的例子中,我们定义了一个名为 Color 的枚举,它包含三个成员 RedGreenBlue。然后我们创建了一个变量 c 并将其赋值为

6. 断言

TypeScript 中的类型断言是一种告诉编译器变量实际类型的方式。这有助于你在需要时绕过类型检查。

let someValue: any = "this is a string";

let strLength: number = (<string>someValue).length;
  • 1
  • 2
  • 3

在上面的例子中,我们使用类型断言将 someValue 变量断言为 string 类型,然后访问了它的 length 属性。

7. 模块

TypeScript 中的模块是一种组织代码的方式。它允许你将代码分割成可重用的部分,并控制它们的可见性。

 = function greet(name: string): string {
  return 'Hello, ' + name;
};
  • 1
  • 2
  • 3

在上面的例子中,我们使用 导出了一个名为 greet 的函数。

8. 命名空间

命名空间是 TypeScript 中用于组织代码的另一种方式。它允许你将代码分割成不同的命名空间,以避免名称冲突。

namespace Utility {
  export function log(message: string) {
    (message);
  }
}

("Hello, world!");
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在上面的例子中,我们定义了一个名为 Utility 的命名空间,并在其中导出了一个名为 log 的函数。然后我们通过 调用了这个函数。

9. 装饰器

装饰器是 TypeScript 中用于修改类和类成员的一种方式。它可以帮助你为类、方法、属性或参数添加额外的功能。

function enumerable(value: boolean) {
  return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
     = value;
  };
}

class Greeter {
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7