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

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

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


3. 使用FetchService类

import { FetchService } from './FetchService';
const fetchService = new FetchService();
// GET requestconst fetchData = async () => {
  try {
    const data = await fetchService.get<{ message: string }>('https://api.example.com/data');
    console.log(data.message);
  } catch (error) {
    console.error('An error occurred:', error);
  }}
// POST requestconst sendData = async () => {
  try {
    const data = await fetchService.post<{ message: string }>('https://api.example.com/data', {
      key: 'value'
    });
    console.log(data.message);
  } catch (error) {
    console.error('An error occurred:', error);
  }}
// PUT requestconst updateData = async () => {
  try {
    const data = await fetchService.put<{ message: string }>('https://api.example.com/data', {
      key: 'new-value'
    });
    console.log(data.message);
  } catch (error) {
    console.error('An error occurred:', error);
  }}
// DELETE requestconst deleteData = async () => {
  try {
    const data = await fetchService.delete<{ message: string }>('https://api.example.com/data');
    console.log(data.message);
  } catch (error) {
    console.error('An error occurred:', error);
  }}
fetchData();sendData();updateData();deleteData();

 

以上代码首先导入了我们创建的 FetchService 类,并实例化了一个新的 fetchService 对象。然后,我们定义了四个异步函数,每个函数都执行一个网络请求,并在请求成功时打印出返回数据中的 message 字段。这四个函数分别对应 GET, POST, PUT DELETE 请求。

 

我们使用了 <{ message: string }> 来指定返回数据的类型,这样我们就可以得到TypeScript的类型检查和自动补全功能。如果你的数据类型更复杂,你可以定义一个接口来描述它,然后在这里使用那个接口。

 

如果请求失败,我们在 catch 块中捕获错误并打印错误消息。如果服务器返回的HTTP状态码不是200-299,fetch API会认为请求成功,不会抛出错误。因此,我们在 FetchService 类的每个方法中都检查了 response.ok 属性,如果请求未成功,我们抛出一个包含状态文本的错误。


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

相关文章
|
25天前
|
JavaScript 编译器
31.【TypeScript 教程】混入(Mixins)
31.【TypeScript 教程】混入(Mixins)
17 3
|
25天前
|
JavaScript 编译器
35.【TypeScript 教程】编译选项
35.【TypeScript 教程】编译选项
16 2
|
25天前
|
JavaScript 编译器
33.【TypeScript 教程】命名空间
33.【TypeScript 教程】命名空间
18 2
|
25天前
|
JavaScript 前端开发
37.【TypeScript 教程】TSLint 与 ESLint
37.【TypeScript 教程】TSLint 与 ESLint
17 0
|
25天前
|
JavaScript 编译器 IDE
36.【TypeScript 教程】tsconfig.json 配置
36.【TypeScript 教程】tsconfig.json 配置
13 0
|
25天前
|
JavaScript 前端开发 编译器
34.【TypeScript 教程】声明合并
34.【TypeScript 教程】声明合并
18 0
|
25天前
|
JavaScript 编译器 开发者
32.【TypeScript 教程】模块
32.【TypeScript 教程】模块
13 0
|
23天前
|
JavaScript 前端开发 Java
TypeScript 类型兼容性
TypeScript 类型兼容性
|
23天前
|
JavaScript 前端开发
typescript 混合类型
typescript 混合类型
|
7天前
|
JavaScript 前端开发 IDE
TypeScript中的声明文件(.d.ts):扩展类型系统
TypeScript的`.d.ts`声明文件为JS库提供类型信息,增强IDE支持,如自动完成和类型检查。通过声明合并,可在全局作用域定义类型。示例包括为`my-library`创建声明模块,导出函数和接口。声明文件通常存于`@types`或指定`typeRoots`。用于旧JS代码的类型注解,如`myGlobalObject`。学习更多,参阅TypeScript官方文档。分享你的TS声明文件经验!