【问题标题】:Typescript const return empty打字稿常量返回空
【发布时间】:2022-12-05 23:53:38
【问题描述】:

在职的:

export interface PlayersResponse {
    status: number;
    maxplayers: number;
    online: number;
    players: string[];
}

const getPlayers = async (uuid: string): Promise<PlayersResponse> => {
    const { data } = await http.get(`/api/client/servers/${uuid}/status`);
    return (data.data || []);
};

不工作:

export interface PlayersResponse {
    status: number;
    maxplayers: number;
    online: number;
    players: string[];
}

const getPlayers = async (uuid: string): Promise<PlayersResponse> => {
    if(uuid === "") return [];
    const { data } = await http.get(`/api/client/servers/${uuid}/status`);
    return (data.data || []);
};

为什么? 如果 uuid 为空,我不需要在 getPlayers 上返回任何内容(空)。我该怎么做?谢谢。我尝试: return; return []; 但每次都会出错

类型“never[]”缺少类型“PlayersResponse”中的以下属性:status、maxplayers、online、players

【问题讨论】:

  • data.data 应该是什么?一群球员?如果是这样,您应该将返回类型更新为数组。否则,如果 data.data 是假的,你真的应该返回一个数组吗?

标签: typescript react-typescript


【解决方案1】:

您不能只返回 [],因为 getPlayers 的返回类型是 Promise&lt;PlayersResponse&gt;

一种方法如下:

const getPlayers = async (uuid: string): Promise<PlayersResponse | null> => {
  const { data } = await http.get(`/api/client/servers/${uuid}/status`);
  
  if (data == null) {
    return null;
  }  

  return data.data;
};

【讨论】:

  • 简单的return (data.data || []); 工作完美。问题仅限于return [];
猜你喜欢
  • 2020-04-24
  • 2015-10-07
  • 2017-03-06
  • 2017-06-20
  • 2018-01-10
  • 2020-06-29
  • 2018-07-30
  • 2021-09-18
  • 2019-09-26
相关资源
最近更新 更多