TypeScript 是 JavaScript 的一个超集,它添加了静态类型和基于类的面向对象编程功能。类型系统是 TypeScript 的核心特性之一,它可以帮助开发者提高代码的可维护性、减少错误,并使代码更易于理解。本指南将带你从零开始,轻松掌握 TypeScript 类型系统,并提供一些实用技巧。

什么是 TypeScript 类型系统?

TypeScript 的类型系统允许你在编写代码时指定变量的类型。这些类型在编译时被检查,以确保代码的准确性。TypeScript 支持多种类型,包括基本类型、联合类型、接口、类等。

基本类型

TypeScript 支持以下基本类型:

  • number:表示数字。
  • string:表示字符串。
  • boolean:表示布尔值。
  • nullundefined:表示空值。
let age: number = 25;
let name: string = "Alice";
let isStudent: boolean = true;
let car: null = null;
let dog: undefined = undefined;

联合类型

联合类型允许你声明一个变量可以具有多种类型中的一种。

let input: string | number;
input = "Hello"; // 正确
input = 123; // 正确

接口

接口用于定义对象的形状,包括其属性和类型。

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

let person: Person = {
  name: "Alice",
  age: 25
};

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

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

  speak() {
    console.log("I am a " + this.name);
  }
}

let animal = new Animal("dog");
animal.speak(); // 输出:I am a dog

实用技巧

类型别名

类型别名可以给类型创建一个别名。

type StringArray = string[];
let letters: StringArray = ["a", "b", "c"];

非空断言

非空断言 ! 可以告诉 TypeScript 你确信变量不为空。

let input: string | null = null;
let length: number = input!.length; // 输出:0

类型守卫

类型守卫可以帮助 TypeScript 确定变量的类型。

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

function example(value: any) {
  if (isString(value)) {
    console.log(value.toUpperCase()); // 输出:HELLO
  }
}

总结

通过学习 TypeScript 类型系统,你可以提高代码的可维护性和可读性。本文介绍了 TypeScript 类型系统的基本概念和实用技巧,希望对你有所帮助。随着你不断实践,你会更加熟练地使用 TypeScript 类型系统,从而写出更优秀的代码。