TypeScript 是 JavaScript 的一个超集,它通过引入静态类型系统来增强 JavaScript 的能力。掌握 TypeScript 可以让你编写出更加健壮、易于维护的代码。本文将带你从基础类型到复杂类型,一步步了解 TypeScript 的强大之处。

基础类型

TypeScript 提供了一系列的基础类型,这些类型是构建复杂类型系统的基石。

布尔类型

布尔类型(boolean)是 TypeScript 中最基本的类型之一,它只有两个值:truefalse

let isDone: boolean = false;

数字类型

数字类型(number)用于表示整数和浮点数。

let age: number = 26;
letPI: number = 3.14159;

字符串类型

字符串类型(string)用于表示文本。

let name: string = "张三";

字符串模板

TypeScript 支持使用模板字符串(template strings)来构建字符串。

let message: string = `我的名字是${name}`;

数组类型

数组类型用于表示一系列元素。

let numbers: number[] = [1, 2, 3];
let colors: string[] = ["红色", "绿色", "蓝色"];

元组类型

元组类型(tuple)用于表示一个已知元素数量和类型的数组。

let point: [number, number] = [1, 2];

枚举类型

枚举类型(enum)用于表示一组命名的常量。

enum Color {
  Red,
  Green,
  Blue
}
let c: Color = Color.Green;

任意类型

任意类型(any)用于表示任何类型的值。

let notSure: any = 4;
notSure = "maybe a string instead";

复杂类型

TypeScript 提供了一些复杂类型,它们可以帮助你更精确地描述数据结构。

接口

接口(interface)用于描述对象的形状。

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

let tom: Person = {
  name: "Tom",
  age: 25
};

类(class)用于定义具有属性和方法的对象。

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

let dog = new Animal("旺财");

类型别名

类型别名(type alias)用于为类型创建一个新的名字。

type StringArray = string[];
let words: StringArray = ["hello", "world"];

联合类型

联合类型(union type)用于表示可能具有多个类型之一的变量。

let input: string | number = 4;
input = "五";

交叉类型

交叉类型(intersection type)用于表示具有多个类型共有的属性和方法。

interface Animal {
  name: string;
}

interface Mammal {
  age: number;
}

let myAnimal: Animal & Mammal = {
  name: "熊猫",
  age: 5
};

类型守卫

类型守卫(type guard)是一种技术,用于在运行时检查变量的类型。

function isString(value: any): value is string {
  return typeof value === "string";
}

let value = 5;
if (isString(value)) {
  console.log(value.toUpperCase());
}

总结

通过掌握 TypeScript 的基础类型和复杂类型,你可以构建出强大的类型系统,从而编写出更加健壮、易于维护的 JavaScript 代码。希望本文能帮助你更好地理解 TypeScript 的强大之处,让你在编程的道路上更加得心应手。