TypeScript 类型
TypeScript 是一种被广泛使用的静态类型语言,它在 JavaScript 的基础上加入了类型注解和其他特性,可以编译为 JavaScript,并在编译时检测类型错误。在这篇文章中,我们将探讨 TypeScript 中的类型系统。
基础类型
TypeScript 自带了一些基础类型,包括布尔型、数字型、字符串型、数组型和元组型。
布尔型
布尔型表示一个值只有 true 或 false 两种状态。在 TypeScript 中,布尔型可以用 boolean 表示。
数字型
数字型表示数字。在 TypeScript 中,数字型可以用 number 表示。
字符串型
字符串型表示字符。在 TypeScript 中,字符串型可以用 string 表示。
数组型
数组型表示一组值。在 TypeScript 中,数组可以用 number[] 或 string[] 等表示,并且还支持泛型数组 Array
元组型
元组型表示一个长度和类型都固定的数组。在 TypeScript 中,元组可以用 [number, string] 表示。
联合类型
联合类型表示一个值可以是多种类型之一。在 TypeScript 中,联合类型可以用 | 分隔多个类型。
例如:
```typescript
function stringOrNumber(arg: string | number): void {
console.log(arg);
}
stringOrNumber('hello');
stringOrNumber(42);
```
交叉类型
交叉类型表示一个值同时具备多种类型的属性和方法,相当于将多个类型合并。在 TypeScript 中,交叉类型可以用 & 分隔多个类型。
例如:
```typescript
interface A {
a: number;
}
interface B {
b: string;
}
type C = A & B;
const c: C = {
a: 42,
b: 'hello'
};
```
类型别名
类型别名用来给一种类型取别名。在 TypeScript 中,类型别名可以使用 type 关键字定义。
例如:
```typescript
type Age = number;
function printAge(age: Age): void {
console.log(age);
}
printAge(42);
```
枚举类型
枚举类型用来表示一组有限的值。在 TypeScript 中,枚举可以使用 enum 关键字定义。
例如:
```typescript
enum Direction {
Up,
Down,
Left,
Right
}
function printDirection(direction: Direction): void {
console.log(direction);
}
printDirection(Direction.Up);
```
泛型
泛型是一种类型变量,用来表示各种类型。
例如:
```typescript
function identity
return arg;
}
console.log(identity
console.log(identity
```
类型注解和类型推断
类型注解是指在声明变量或函数时显式指定其类型,可以让 TypeScript 在编译时检测类型错误。类型注解可以使用 : 语法指定。
例如:
```typescript
let x: number;
x = 42; // ok
x = 'hello'; // error
```
类型推断是指 TypeScript 根据上下文自动推断变量或函数的类型。类型推断可以省略类型注解。
例如:
```typescript
let x = 42;
```
总结
TypeScript 的类型系统提供了一系列工具和语法,用于帮助我们在编写代码时更加准确和规范。通过使用类型注解和类型检查,可以尽早发现代码中的错误并提高代码的可读性和可维护性。除了本文介绍的类型,TypeScript 还提供了更多类型相关的特性,例如类、接口、命名空间等,可以帮助我们更好地组织和抽象代码。