TypeScript 是一种由微软开发的静态类型编程语言,它是 JavaScript 的超集,并且可以在编译时进行类型检查。TypeScript 强大的类型系统使得开发者能够更轻松地编写可维护、可扩展的代码。本文将详细介绍 TypeScript 中的基础类型,包括原始类型、对象类型、数组类型、元组类型、枚举类型和联合类型。
原始类型
在 TypeScript 中,有以下几种原始类型:
数字类型
数字类型用于表示整数或浮点数。可以使用 number
关键字来声明数字变量。
例如:
代码语言:typescript复制let num: number = 123;
字符串类型
字符串类型用于表示文本数据。可以使用 string
关键字来声明字符串变量。
例如:
代码语言:typescript复制let str: string = "Hello";
布尔类型
布尔类型用于表示逻辑值,即 true
或 false
。可以使用 boolean
关键字来声明布尔变量。
例如:
代码语言:typescript复制let isTrue: boolean = true;
空值和未定义类型
空值类型 (void
) 用于表示没有返回值的函数。未定义类型 (undefined
) 用于表示未赋值的变量。可以使用 void
和 undefined
关键字来声明对应的变量。
例如:
代码语言:typescript复制let result: void = undefined; // 空值类型
let undef: undefined = undefined; // 未定义类型
空值和无类型类型
空值类型 (void
) 用于表示没有返回值的函数。 null
类型用于表示空值或者对象引用为空。可以使用 void
和 null
关键字来声明对应的变量。
例如:
代码语言:typescript复制let nothing: null = null; // 空值类型
let nul: null = null; // 空值类型
对象类型
对象类型用于表示非原始数据类型,包括对象、数组、函数等。可以使用 object
关键字来声明对象类型。
对象类型
对象类型用于表示一个对象,其中包含多个键值对。可以使用 {}
或者 object
关键字来声明对象类型。对象类型可以指定属性名和属性值的类型。
例如:
代码语言:typescript复制let person: { name: string; age: number } = {
name: "John",
age: 25,
};
数组类型
数组类型用于表示一个由相同类型的元素组成的有序集合。可以使用 类型[]
或者 Array<类型>
的语法来声明数组类型。
例如:
代码语言:typescript复制let numbers: number[] = [1, 2, 3, 4, 5]; // 数字数组
let names: string[] = ["Alice", "Bob", "Charlie"]; // 字符串数组
元组类型
元组类型用于表示一个固定长度和类型的数组。可以使用 [类型1, 类型2, ...]
的语法来声明元组类型。
例如:
代码语言:typescript复制let user: [string, number] = ["John", 25]; // 元组类型
函数类型
函数类型用于表示一个函数。可以使用 (参数类型) => 返回值类型
的语法来声明函数类型。
例如:
代码语言:typescript复制let add: (x: number, y: number) => number = function (x: number, y: number): number {
return x y;
};
枚举类型
枚举类型用于表示一组有名字的常量。可以使用 enum
关键字来声明枚举类型。
例如:
代码语言:typescript复制enum Color {
Red,
Green,
Blue,
}
let color: Color = Color.Green;
在枚举类型中,每个枚举成员都有一个与它关联的数字值,默认从 0 开始。也可以手动指定枚举成员的数值。
联合类型
联合类型用于表示一个变量可以是多种类型之一。可以使用 类型1 | 类型2 | ...
的语法来声明联合类型。
例如:
代码语言:typescript复制let value: string | number = "Hello"; // 联合类型
value = 123; // 合法
联合类型可以提供更大的灵活性,使得我们能够处理多种不同类型的值。
类型推断和类型断言
TypeScript 具有强大的类型推断能力,它可以根据上下文自动推断变量的类型。例如,如果我们在定义变量时直接赋值,TypeScript 可以推断出变量的类型。
代码语言:typescript复制let num = 123; // 类型推断为 number
let str = "Hello"; // 类型推断为 string
此外,我们还可以使用类型断言来告诉编译器某个值的类型。类型断言有两种语法形式,<类型>值
和 值 as 类型
。
let someValue: unknown = "Hello";
let strLength1: number = (<string>someValue).length;
let strLength2: number = (someValue as string).length;
类型断言可以在一些无法通过类型推断的情况下提供类型信息,但要注意谨慎使用,以避免出现类型错误。
总结
本文详细介绍了 TypeScript 的基础类型,包括原始类型、对象类型、数组类型、元组类型、枚举类型和联合类型等方面。TypeScript 强大的类型系统使得开发者能够在编译时进行类型检查,减少了在运行时出现类型错误的概率。