前言
TypeScript 是一种静态类型的超集语言,扩展了 JavaScript 的功能。它提供了丰富的数据类型,包括基本数据类型和复杂数据类型。下面是对这些类型的详细解析和一些经典例子。
基本数据类型
-
布尔类型(Boolean)
-
表示逻辑值,只能是
true
或false
。 -
示例:
let isDone: boolean = false;
-
-
数字类型(Number)
-
用于表示数值,可以是整数或浮点数。
-
TypeScript支持十进制、二进制、八进制和十六进制字面量。
-
示例:
let count: number = 10; let price: number = 3.99;
-
-
字符串类型(String)
-
用于表示文本数据。
-
可以使用双引号(“”)或单引号(‘’)表示字符串。
-
示例:
let message: string = "Hello, TypeScript!";
-
-
空值(Null 和 Undefined)
-
null
表示没有任何对象值。 -
undefined
表示一个变量被声明了,但没有被赋值。 -
示例:
let value1: null = null; let value2: undefined = undefined;
-
-
枚举类型(Enum)
-
是对JavaScript标准数据类型的一个补充,用于定义一组命名的常量。
-
示例:
enum Color { Red, Green, Blue } let myColor: Color = Color.Green;
-
-
任意类型(Any)
-
当在编程阶段不确定变量的类型时,可以使用
any
类型。 -
示例:
let notSure: any = 4; notSure = "maybe a string"; notSure = false;
-
-
空类型(Void)
-
表示没有任何类型,一般用于说明函数的返回值不能是
undefined
和null
之外的值。 -
示例:
function logMessage(): void { console.log("This is a log message."); }
-
-
never
-
表示位置类型,通常用于错误位置或总是抛出异常的函数。
-
例子:
function throwError(message: string): never { throw new Error(message); }
-
复杂数据类型
-
数组 - 表示元素集合,可以是固定类型或多种类型。
-
同类型数组:
let list: number[] = [1, 2, 3];
-
泛型数组:
let list: Array<number> = [1, 2, 3];
-
-
元组 - 已知元素数量和类型的数组。
- 例子:
let x: [string, number] = ["hello", 10];
- 例子:
-
枚举 - 一组命名的常数。
- 例子:
enum Color {Red, Green, Blue} let c: Color = Color.Green;
- 例子:
-
对象 - 表示无序的键值对集合。
- 例子:
let person = { name: "Alice", age: 21 };
- 例子:
-
类 - 用于创建对象的模板。
-
例子:
class Greeter {greeting: string;constructor(message: string) {this.greeting = message;}greet() {return "Hello, " + this.greeting;}}let greeter = new Greeter("world");
-
-
接口 - 定义了对象的结构,但不实现它。
-
例子:
interface Name {name: string;age: number;}function greeter(person: Name) {console.log("Hello, " + person.name + "! You are " + person.age + " years old.");}
-
-
函数 - 表示一段可重用的代码。
-
例子:
function add(x: number, y: number): number {return x + y;}
-
-
泛型 - 允许在创建类、接口或函数时使类型成为参数。
-
例子:
function identity<T>(arg: T): T {return arg;}let output = identity<string>("myString");
-
-
联合类型 - 表示一个值可以是几种类型之一。
- 例子:
let value: string | number = "hello"; // 也可以是 value = 42;
- 例子:
-
类型别名 - 为类型创建一个新的名称。
- 例子:
type Name = string; let userName: Name = "TypeScript";
- 例子:
-
字面量类型 - 表示原始值的精确类型。
- 例子:
let size: 'small' | 'medium' | 'large' = 'medium';
- 例子:
-
索引访问签名 - 允许你访问对象的属性,这些属性的键是字符串或数字。
-
例子:
interface StringArray {[index: number]: string;}let myArray: StringArray;myArray = ["Bob", "Fred"];
-
-
映射类型 - 创建一个新类型,其属性是从现有类型派生的。
-
例子:
type OptionsFlags = {[K in keyof typeof MY_OPTIONS]: boolean;};
-
总结
TypeScript通过丰富的数据类型系统,为JavaScript开发提供了更强的类型安全和代码可读性。基本数据类型和复杂数据类型各有其应用场景,开发者可以根据实际需要选择使用。通过上述经典例子的展示,希望能帮助读者更好地理解TypeScript的数据类型系统。