TypeScript 是一种由微软开发的自由和开源的编程语言,它是 JavaScript 的一个超集,添加了可选的静态类型和基于类的面向对象编程。TypeScript 的类型系统是其核心特性之一,它为开发者提供了强大的类型检查,有助于减少运行时错误,并提高代码的可维护性。
基础类型
TypeScript 提供了多种基础类型,包括:
- 布尔值(boolean):表示真或假的值。
- 数字(number):表示整数和浮点数。
- 字符串(string):表示文本。
- null 和 undefined:表示无值。
- 数组(array):一组有序的值。
- 元组(tuple):一个固定长度的数组,每个元素可以是不同类型。
- 枚举(enum):一组命名的数字常量。
- 任意类型(any):表示可以赋值为任何类型的值。
示例
let isDone: boolean = false;
let count: number = 10;
let msg: string = "Hello, world!";
let numbers: number[] = [1, 2, 3];
let tuple: [string, number] = ["hello", 10];
let color: string | number = "red"; // 联合类型
接口(Interfaces)
接口定义了一个对象的结构,它可以包含属性的类型、方法签名等。接口是一种类型,而不是一个具体的对象。
示例
interface Person {
name: string;
age: number;
}
let person: Person = {
name: "Alice",
age: 25
};
类(Classes)
类是面向对象编程的基础,它定义了对象的属性和方法。
示例
class Animal {
name: string;
constructor(name: string) {
this.name = name;
}
makeSound() {
console.log("Some sound");
}
}
let dog = new Animal("Buddy");
dog.makeSound();
高级类型
TypeScript 的类型系统还支持高级类型,如泛型、类型别名、条件类型等。
泛型
泛型允许你创建可重用的组件,其中某些部分在编译时是不确定的。
示例
function identity<T>(arg: T): T {
return arg;
}
let output = identity<string>("myString");
类型别名
类型别名提供了给一个类型起一个新名字的机制。
示例
type StringArray = string[];
let myArray: StringArray = ["Alice", "Bob", "Charlie"];
条件类型
条件类型允许你根据条件表达式返回不同的类型。
示例
type T extends U ? X : Y = Y;
类型守卫
类型守卫是一种类型检查机制,它允许你在运行时检查一个变量是否属于某个类型。
示例
function isString(x: any): x is string {
return typeof x === "string";
}
function greet(n: any) {
if (isString(n)) {
return "Hello, " + n;
}
return "Hello, my friend!";
}
let user = "Alice";
console.log(greet(user)); // 输出: Hello, Alice
总结
TypeScript 的类型系统是强大的,它可以帮助你编写更安全、更可靠的代码。通过理解并运用 TypeScript 的基础和高级类型,你可以更好地掌握强类型编程的艺术。
