引言

TypeScript是一种由微软开发的开源编程语言,它是JavaScript的一个超集,添加了静态类型和基于类的面向对象编程特性。TypeScript使得JavaScript开发者能够以更高效、更安全的方式编写代码。本文将带领大家从基础类型到复杂类型系统,全面了解TypeScript。

基础类型

在TypeScript中,基础类型包括数字、字符串、布尔值、null、undefined以及符号(Symbol)。

数字(Number)

数字类型与JavaScript中的数字类型相同,用于表示数值。

let age: number = 30;

字符串(String)

字符串类型用于表示文本,与JavaScript中的字符串类型相同。

let name: string = "Alice";

布尔值(Boolean)

布尔值表示逻辑值,只有两个值:true或false。

let isMarried: boolean = false;

null和undefined

null和undefined是TypeScript中的两个特殊类型,分别表示空值和未定义。

let car: null = null;
let dog: undefined = undefined;

符号(Symbol)

符号是一种原始数据类型,用于创建独一无二的值。

let uniqueId: Symbol = Symbol();

复杂类型

在TypeScript中,除了基础类型,还有一些复杂类型,如数组、元组、枚举、接口、类和映射类型。

数组(Array)

数组是一种有序的集合,可以包含多种类型的元素。

let numbers: number[] = [1, 2, 3, 4, 5];

元组(Tuple)

元组是一种数组类型,其中每个元素都有一个已知的类型和固定的顺序。

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

枚举(Enum)

枚举是一种用于声明一组命名的数值常量的类型。

enum Color {
  Red,
  Green,
  Blue
}

接口(Interface)

接口是一种用于描述对象的结构和类型的方式。

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

类(Class)

类是一种用于定义对象的属性和方法的结构。

class Animal {
  constructor(public name: string) {}
}

映射类型(Mapped Types)

映射类型是一种通过指定现有类型来创建新的类型的方式。

type Readonly<T> = {
  readonly [P in keyof T]: T[P];
};

类型别名(Type Aliases)

类型别名是一种创建自定义类型的方式。

type Point = {
  x: number;
  y: number;
};

类型守卫(Type Guards)

类型守卫是一种用于提高类型安全性的技术。

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

let item = "Hello, TypeScript!";
if (isString(item)) {
  console.log(item.toUpperCase()); // 输出:HELLO, TypeScript!
}

总结

本文介绍了TypeScript的基础类型和复杂类型,从数组、元组、枚举、接口、类到映射类型,帮助读者全面了解TypeScript的类型系统。希望这篇文章能够帮助您轻松入门TypeScript,并更好地利用其强大的类型系统提高代码质量。