带你读《现代TypeScript高级教程》十七、TypeScript封装Fetch(1)

简介: 带你读《现代TypeScript高级教程》十七、TypeScript封装Fetch(1)

十七、TypeScript封装Fetch

1. 安装与配置TypeScript

首先,你的电脑上安装TypeScript。在命令行中输入以下命令:

npm install -g typescript

 

在你的项目根目录中,生成一个 tsconfig.json 文件来配置TypeScript的编译选项。在命令行中输入以下命令:

 

tsc --init

 

编辑 tsconfig.json 文件。这个文件配置了TypeScript的编译选项。确保以下设置已经开启:

{
  "compilerOptions": {
    "target": "ES2015",
    "module": "commonjs",
    "strict": true
  }}

2. 创建Fetch服务

src文件夹中创建一个新的 FetchService.ts 文件。我们将在这个文件中封装fetch API: 当然,下面我们会将put和delete方法也添加到我们的FetchService中:

 

export class FetchService {
  async get(url: string): Promise {
    const response = await fetch(url);
    if (!response.ok) {
      throw new Error(response.statusText);
    }
    const data: T = await response.json();
    return data;
  }
  async post(url: string, body: any): Promise {
    const response = await fetch(url, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(body)
    });
    if (!response.ok) {
      throw new Error(response.statusText);
    }
    const data: T = await response.json();
    return data;
  }
  async put(url: string, body: any): Promise {
    const response = await fetch(url, {
      method: 'PUT',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(body)
    });
    if (!response.ok) {
      throw new Error(response.statusText);
    }
    const data: T = await response.json();
    return data;
  }
  async delete(url: string): Promise {
    const response = await fetch(url, {
      method: 'DELETE'
    });
    if (!response.ok) {
      throw new Error(response.statusText);
    }
    const data: T = await response.json();
    return data;
  }}

 

这样我们就成功地创建了一个FetchService类,它封装了 fetch API的 GET, POST, PUT DELETE 方法。每个方法都返回一个Promise,该Promise解析为一个泛型 T,这意味着你可以指定返回数据的类型。


带你读《现代TypeScript高级教程》十七、TypeScript封装Fetch(2)https://developer.aliyun.com/article/1348428?groupCode=tech_library

相关文章
|
24天前
|
JavaScript Java API
30.【TypeScript 教程】Reflect Metadata
30.【TypeScript 教程】Reflect Metadata
15 4
|
24天前
|
JavaScript 编译器
31.【TypeScript 教程】混入(Mixins)
31.【TypeScript 教程】混入(Mixins)
17 3
|
24天前
|
JavaScript
28.【TypeScript 教程】生成器(Generator)
28.【TypeScript 教程】生成器(Generator)
25 3
|
24天前
|
JavaScript 编译器
35.【TypeScript 教程】编译选项
35.【TypeScript 教程】编译选项
16 2
|
24天前
|
JavaScript 编译器
33.【TypeScript 教程】命名空间
33.【TypeScript 教程】命名空间
18 2
|
24天前
|
JavaScript 前端开发
37.【TypeScript 教程】TSLint 与 ESLint
37.【TypeScript 教程】TSLint 与 ESLint
17 0
|
24天前
|
JavaScript 编译器 IDE
36.【TypeScript 教程】tsconfig.json 配置
36.【TypeScript 教程】tsconfig.json 配置
13 0
|
24天前
|
JavaScript 前端开发 编译器
34.【TypeScript 教程】声明合并
34.【TypeScript 教程】声明合并
17 0
|
24天前
|
JavaScript 编译器 开发者
32.【TypeScript 教程】模块
32.【TypeScript 教程】模块
12 0
|
24天前
|
JavaScript 监控 编译器
29.【TypeScript 教程】装饰器(Decorator)
29.【TypeScript 教程】装饰器(Decorator)
13 0