首页 > 解决方案 > 打字稿从外部源返回数据对象

问题描述

下面我的打字稿代码有什么问题吗?

import axios from 'axios';

export const createOrder = async (
  locale: string
): Promise<any | null> => {
  try {
    const { data } = await axios.post(
      url,
      {data: locale}
    );
    return data;
  } catch (err) {
    console.error(err.message);
    return null;
  }
};

一些人认为 Promise<any | null> 是不好的做法,但我想知道这里有什么问题,因为我们对来自外部源的数据结构一无所知。

标签: javascripttypescript

解决方案


你需要问的问题是:

你能相信来自 API 的东西吗?你相信它会保持一致吗?如果没有,影响/风险是什么?

有些人认为,当您与(尤其是第 3 方)API 交互时,您应该始终验证它返回的所有内容。我认为这并不总是正确的,你需要达到一个平衡。

如果您打算完全验证从 API 返回的内容,请使用unknown, notany并确定您是否通过类型保护和断言函数获得了预期的结果。


推荐阅读