返回

Ts在项目中的使用笔记之常用类型

前端

相信大家在接触Ts的时候,或多或少都会对Ts中的类型感到困惑,毕竟在Js中,类型只是用来做类型提示,但是在Ts中,类型却会限制变量或函数的使用,所以使用不当就会出现类型报错。

为了帮助大家更好的理解和使用Ts中的类型,我决定写一篇笔记,记录我在项目中遇到的Ts常用类型,以及它们的使用场景。

字符串 string

字符串是最基本的数据类型,用来存储文本信息。在Ts中,字符串可以使用单引号或双引号来表示。

let name: string = "John Doe";
let age: number = 30;
let isMarried: boolean = true;

数字类型 number

数字类型用于存储数字信息。在Ts中,数字类型可以是整数或浮点数。

let salary: number = 100000;
let pi: number = 3.14159265;

布尔类型 boolean

布尔类型用于存储真假值。在Ts中,布尔类型只有两个值:true和false。

let isLoggedIn: boolean = true;
let isNight: boolean = false;

数组类型 array

数组类型用于存储一组有序的数据。在Ts中,数组可以使用方括号来表示。

let numbers: number[] = [1, 2, 3, 4, 5];
let names: string[] = ["John", "Mary", "Bob"];

元组 Tuple

元组类型用于存储一组有序的数据,但与数组不同的是,元组中的每个元素都可以有不同的类型。在Ts中,元组可以使用圆括号来表示。

let person: [string, number] = ["John Doe", 30];
let product: [string, number, boolean] = ["iPhone", 1000, true];

枚举类型 enum

枚举类型用于定义一组常量。在Ts中,枚举可以使用enum来定义。

enum Color {
  Red,
  Green,
  Blue
}

let myColor: Color = Color.Red;

对象类型 object

对象类型用于存储一组无序的数据。在Ts中,对象可以使用大括号来表示。

let person: object = {
  name: "John Doe",
  age: 30,
  isMarried: true
};

类类型 class

类类型用于定义一个类。在Ts中,类可以使用class关键字来定义。

class Person {
  name: string;
  age: number;

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

  greet() {
    console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
  }
}

let john = new Person("John Doe", 30);
john.greet();

接口类型 interface

接口类型用于定义一个契约。在Ts中,接口可以使用interface关键字来定义。

interface Person {
  name: string;
  age: number;

  greet(): void;
}

class Employee implements Person {
  name: string;
  age: number;
  salary: number;

  constructor(name: string, age: number, salary: number) {
    this.name = name;
    this.age = age;
    this.salary = salary;
  }

  greet() {
    console.log(`Hello, my name is ${this.name} and I am ${this.age} years old. My salary is ${this.salary}.`);
  }
}

let john = new Employee("John Doe", 30, 100000);
john.greet();

联合类型 union

联合类型用于定义一个变量或函数可以有多种类型。在Ts中,联合类型可以使用竖线 | 来表示。

let nameOrAge: string | number = "John Doe";
nameOrAge = 30;

any类型

any类型表示任何类型。在Ts中,any类型可以用来表示任何值。

let value: any = "John Doe";
value = 30;
value = true;

unknown类型

unknown类型表示一个未知的类型。在Ts中,unknown类型可以用来表示任何值,但与any类型不同的是,unknown类型不能直接赋值给其他类型变量。

let value: unknown = "John Doe";
let name: string = value as string; // 必须使用类型断言

void类型

void类型表示没有返回值。在Ts中,void类型可以用来表示函数没有返回值。

function greet(): void {
  console.log("Hello, world!");
}

never类型

never类型表示永远不会返回。在Ts中,never类型可以用来表示函数永远不会返回,或者函数会抛出异常。

function infiniteLoop(): never {
  while (true) {
    // 永远不会结束的循环
  }
}

function throwError(): never {
  throw new Error("This is an error.");
}