TypeScript 是构建大型应用的重要工具,丰富的面向对象特性和内置对象支持让开发更高效。
TypeScript 面向对象编程
类
在 TypeScript 中,类是面向对象编程的核心,它包含属性、构造函数和方法。
class Person {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
greet(): string {
return `Hello, my name is ${this.name}, and I am ${this.age} years old.`;
}
}
const john = new Person('John', 30);
console.log(john.greet());
特性 | 描述 |
---|---|
类 | 使用 class 定义 |
构造函数 | 使用 constructor 定义 |
方法 | 定义类的行为 |
继承
通过继承,子类可以复用父类的属性和方法,并实现代码复用。
class Employee extends Person {
position: string;
constructor(name: string, age: number, position: string) {
super(name, age); // 调用父类的构造函数
this.position = position;
}
work(): string {
return `${this.name} is working as a ${this.position}.`;
}
}
const jane = new Employee('Jane', 28, 'Developer');
console.log(jane.greet());
console.log(jane.work());
特性 | 描述 |
---|---|
继承 | 使用 extends 关键字 |
super 调用 | 调用父类的构造函数或方法 |
抽象类
抽象类是不能被实例化的类,通常作为其他类的基类。
abstract class Animal {
abstract makeSound(): void; // 抽象方法
move(): void {
console.log('Moving...');
}
}
class Dog extends Animal {
makeSound(): void {
console.log('Woof!');
}
}
const dog = new Dog();
dog.makeSound();
dog.move();
特性 | 描述 |
---|---|
抽象类 | 使用 abstract 定义 |
抽象方法 | 必须在子类中实现 |
接口
接口用于定义对象的结构或类的约束。
interface Shape {
area(): number;
}
class Circle implements Shape {
radius: number;
constructor(radius: number) {
this.radius = radius;
}
area(): number {
return Math.PI * this.radius ** 2;
}
}
const circle = new Circle(10);
console.log(circle.area());
特性 | 描述 |
---|---|
接口 | 使用 interface 定义 |
实现接口 | 使用 implements 关键字 |
Math 对象
Math 对象提供了一系列数学运算和常量。
常用方法
方法 | 功能说明 |
---|---|
Math.abs(x) | 返回 x 的绝对值 |
Math.max(a, b, ...) | 返回参数中的最大值 |
Math.min(a, b, ...) | 返回参数中的最小值 |
Math.pow(x, y) | 返回 x 的 y 次幂 |
Math.sqrt(x) | 返回 x 的平方根 |
Math.random() | 返回 [0, 1) 的随机数 |
Math.round(x) | 返回四舍五入后的整数 |
Math.floor(x) | 返回小于等于 x 的最大整数 |
Math.ceil(x) | 返回大于等于 x 的最小整数 |
常用属性
属性 | 描述 |
---|---|
Math.PI | 圆周率 π |
Math.E | 自然对数的底数 e |
Math.LN2 | 2 的自然对数 |
Math.SQRT2 | 2 的平方根 |
示例代码:
console.log(Math.abs(-10)); // 10
console.log(Math.max(3, 5, 1)); // 5
console.log(Math.random()); // 随机数
console.log(Math.PI); // 3.141592653589793
String 对象
String 对象提供了操作字符串的方法和属性。
常用方法
方法 | 功能说明 |
---|---|
str.toUpperCase() | 转为大写 |
str.toLowerCase() | 转为小写 |
str.substring(a, b) | 截取 [a, b) 范围的子字符串 |
str.indexOf(substr) | 查找子字符串首次出现的位置 |
str.includes(substr) | 判断字符串是否包含某子字符串 |
str.split(separator) | 按分隔符拆分字符串 |
str.replace(a, b) | 替换字符串中的某部分 |
常用属性
属性 | 描述 |
---|---|
str.length | 字符串的长度 |
示例代码:
const str = 'TypeScript is awesome!';
console.log(str.length); // 21
console.log(str.toUpperCase()); // TYPESCRIPT IS AWESOME!
console.log(str.includes('awesome')); // true
console.log(str.split(' ')); // ['TypeScript', 'is', 'awesome!']
凡是过去,皆为序章;凡是未来,皆有可期。