学习笔记 Typescript 高阶 | 青训营

55 阅读1分钟

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;
}