TypeScript作为一种由微软开发的静态类型语言,被设计为JavaScript的一个超集。它提供了编译时类型检查,这可以帮助开发者提前发现代码中的错误,从而提升开发效率和代码质量。以下是TypeScript类型系统的核心概念,帮助你轻松入门。

1. 基本类型

TypeScript提供了丰富的基本类型,包括:

  • number:表示数字,包括整数和浮点数。
  • string:表示字符串。
  • boolean:表示布尔值,即true或false。
  • null:表示空值。
  • undefined:表示未定义的值。
  • any:表示任何类型,相当于JavaScript中的void。

以下是一个简单的例子:

let age: number = 25;
let name: string = "张三";
let isStudent: boolean = false;
let car: null = null;
let message: undefined = undefined;
let anyType: any = "这是一个任意类型";

2. 联合类型

联合类型允许一个变量同时表示多个类型。使用|运算符来表示。

let id: number | string = 100;
id = "200"; // 可以赋值为字符串

3. 接口(Interface)

接口用于定义对象的形状,可以包含多个属性,每个属性都有类型注解。

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

let person: Person = {
  name: "李四",
  age: 30,
};

4. 类型别名(Type Aliases)

类型别名可以给一个类型起一个新名字,方便在代码中复用。

type UserID = number | string;

let userId: UserID = 300;
userId = "400"; // 可以赋值为字符串

5. 字符串字面量类型

字符串字面量类型用于限制变量只能是几个特定的字符串之一。

type Direction = "up" | "down" | "left" | "right";

let direction: Direction;
direction = "up"; // 可以赋值为字符串

6. 函数类型

TypeScript支持函数类型,包括函数的参数类型和返回类型。

function greet(name: string): string {
  return "Hello, " + name;
}

let message: string = greet("张三");

7. 类类型

TypeScript支持类,可以定义类的成员变量和方法。

class Person {
  name: string;
  age: number;

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

  sayHello(): string {
    return "Hello, " + this.name;
  }
}

let person: Person = new Person("李四", 30);
let message: string = person.sayHello();

8. 高级类型

TypeScript还提供了高级类型,如键选类型、映射类型等。

  • 键选类型:允许从对象中获取键的类型。
interface Person {
  name: string;
  age: number;
}

let person: Pick<Person, "name"> = { name: "张三" };
  • 映射类型:允许从对象中创建一个新的对象,其中每个属性都被映射到另一个类型。
type PersonCopy = {
  [P in keyof Person]: string;
};

let personCopy: PersonCopy = { name: "李四", age: "30" };

通过掌握以上核心概念,你可以轻松入门TypeScript类型系统,提升JavaScript开发效率。在实际开发中,TypeScript可以帮助你更好地理解代码,提前发现错误,提高代码质量。