TypeScript是一种由微软开发的JavaScript的超集,它添加了可选的静态类型和基于类的面向对象编程特性。这些特性使得TypeScript在大型应用和团队协作中显得尤为重要。本文将带你从基础类型开始,逐步深入到TypeScript的复杂类型系统。

一、TypeScript基础类型

TypeScript的基础类型包括:

  • 数字(number):表示整数和浮点数。
  • 字符串(string):表示文本。
  • 布尔值(boolean):表示真或假。
  • 空值(null):表示无值。
  • undefined:表示未定义。
  • Symbol:表示一个唯一的值。
let age: number = 30;
let name: string = '张三';
let isTrue: boolean = true;
let nullValue: null = null;
let undefinedValue: undefined = undefined;
let symbol: Symbol = Symbol();

二、字面量类型

字面量类型指的是直接使用具体的值来定义类型,如:

  • 字符串字面量'hello''world'
  • 数字字面量1233.14
  • 布尔字面量truefalse
  • 模板字符串:使用反引号(`)创建,可以包含变量和表达式。
let message: string = `Hello, ${name}`;

三、联合类型

联合类型表示一个变量可以是多种类型中的一种。使用竖线(|)分隔不同类型。

let input: string | number = 'Hello' | 123;

四、元组类型

元组类型用于表示一组已知数量的元素,每个元素具有不同的类型。

let tuple: [number, string] = [123, '张三'];

五、数组类型

数组类型表示一个包含一系列元素的列表,可以使用方括号([])来定义。

let array: number[] = [1, 2, 3];
let array2: string[] = ['Hello', 'World'];

六、枚举类型

枚举类型允许你为一组值命名。

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

七、接口

接口(Interface)用于定义对象的类型,包含一系列属性和方法的定义。

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

let person: Person = {
  name: '张三',
  age: 30
};

八、类型别名

类型别名可以给一个类型创建一个别名,使得代码更加简洁。

type UserID = number | string;
let userId: UserID = 123;
let userId2: UserID = 'abc';

九、泛型

泛型允许你创建可重用的组件和函数,而不必暴露它们的任何具体类型。

function identity<T>(arg: T): T {
  return arg;
}

let output = identity<string>('Hello World');

十、映射类型

映射类型允许你从一个类型创建一个新的类型,通过映射每个属性到另一个新的属性。

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

type User = {
  name: string;
  age: number;
};

let mappedType: MapType<User> = {
  name: '张三',
  age: 30
};

总结

通过以上内容,相信你已经对TypeScript的核心概念有了深入的了解。掌握这些类型和特性,能够帮助你更好地编写JavaScript代码,提高代码的可读性和可维护性。在后续的学习过程中,你可以继续深入研究TypeScript的高级特性,如装饰器、类等。