TypeScript 是 JavaScript 的一个超集,它通过引入静态类型系统来增强 JavaScript 的能力。掌握 TypeScript 可以让你编写出更加健壮、易于维护的代码。本文将带你从基础类型到复杂类型,一步步了解 TypeScript 的强大之处。
基础类型
TypeScript 提供了一系列的基础类型,这些类型是构建复杂类型系统的基石。
布尔类型
布尔类型(boolean)是 TypeScript 中最基本的类型之一,它只有两个值:true 和 false。
let isDone: boolean = false;
数字类型
数字类型(number)用于表示整数和浮点数。
let age: number = 26;
letPI: number = 3.14159;
字符串类型
字符串类型(string)用于表示文本。
let name: string = "张三";
字符串模板
TypeScript 支持使用模板字符串(template strings)来构建字符串。
let message: string = `我的名字是${name}`;
数组类型
数组类型用于表示一系列元素。
let numbers: number[] = [1, 2, 3];
let colors: string[] = ["红色", "绿色", "蓝色"];
元组类型
元组类型(tuple)用于表示一个已知元素数量和类型的数组。
let point: [number, number] = [1, 2];
枚举类型
枚举类型(enum)用于表示一组命名的常量。
enum Color {
Red,
Green,
Blue
}
let c: Color = Color.Green;
任意类型
任意类型(any)用于表示任何类型的值。
let notSure: any = 4;
notSure = "maybe a string instead";
复杂类型
TypeScript 提供了一些复杂类型,它们可以帮助你更精确地描述数据结构。
接口
接口(interface)用于描述对象的形状。
interface Person {
name: string;
age: number;
}
let tom: Person = {
name: "Tom",
age: 25
};
类
类(class)用于定义具有属性和方法的对象。
class Animal {
name: string;
constructor(name: string) {
this.name = name;
}
}
let dog = new Animal("旺财");
类型别名
类型别名(type alias)用于为类型创建一个新的名字。
type StringArray = string[];
let words: StringArray = ["hello", "world"];
联合类型
联合类型(union type)用于表示可能具有多个类型之一的变量。
let input: string | number = 4;
input = "五";
交叉类型
交叉类型(intersection type)用于表示具有多个类型共有的属性和方法。
interface Animal {
name: string;
}
interface Mammal {
age: number;
}
let myAnimal: Animal & Mammal = {
name: "熊猫",
age: 5
};
类型守卫
类型守卫(type guard)是一种技术,用于在运行时检查变量的类型。
function isString(value: any): value is string {
return typeof value === "string";
}
let value = 5;
if (isString(value)) {
console.log(value.toUpperCase());
}
总结
通过掌握 TypeScript 的基础类型和复杂类型,你可以构建出强大的类型系统,从而编写出更加健壮、易于维护的 JavaScript 代码。希望本文能帮助你更好地理解 TypeScript 的强大之处,让你在编程的道路上更加得心应手。
