TypeScript 通过装饰器(decorators)提供了元编程的能力。装饰器可以用于修改类、方法、属性等的行为,常用于实现日志记录、性能分析等功能。
装饰器
// TypeScript 装饰器示例
function log(target: any, key: string, descriptor: PropertyDescriptor) {
const originalMethod = descriptor.value;
descriptor.value = function (...args: any[]) {
console.log(`Calling ${key} with arguments: ${args}`);
const result = originalMethod.apply(this, args);
console.log(`Method ${key} returned: ${result}`);
return result;
};
return descriptor;
}
class Calculator {
@log
add(a: number, b: number): number {
return a + b;
}
}
const calculator = new Calculator();
console.log(calculator.add(3, 5)); // 输出:8
在 TypeScript 中,模块和命名空间用于组织代码,提供了更好的代码组织和复用能力。模块可以将代码拆分为多个文件,使得项目更加模块化和可维护。命名空间允许将相关的代码组织在一起,避免全局命名冲突。
// TypeScript 模块和命名空间示例
// math.ts
export function add(a: number, b: number): number {
return a + b;
}
// app.ts
import { add } from "./math";
console.log(add(3, 5)); // 输出:8
异步编程在现代前端开发中非常重要,TypeScript 对异步编程也有很好的支持。它可以通过async/await关键字来简化异步代码的编写,使得代码更加易读和可维护。同时,TypeScript 还支持 Promise 等异步操作的类型定义。
// TypeScript 异步编程示例
async function fetchData(url: string): Promise<string> {
let response = await fetch(url);
let data = await response.text();
return data;
}