You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript中如何在user函数上正确实现IUser接口

核心问题

现有代码无法正确实现接口的原因有两点:

  • user函数声明返回值类型为IUser,但函数体内没有返回符合接口结构的对象,直接在函数作用域内书写键值对属于无效JavaScript/TypeScript语法。
  • 草稿代码中groups方法的返回类型标注错误,接口要求返回Promise<object[]>,草稿中标注为Promise<object>,存在类型不匹配问题。
正确实现代码

首先定义代码中用到的Options类型(可根据实际业务需求扩展字段),再补全user函数的返回逻辑:

// 可根据实际业务调整Options的字段定义
interface Options {
  userId?: string;
  requestTimeout?: number;
}

interface IUser {
  infomation(): Promise<object>;
  groups(): Promise<object[]>;
}

function user(options?: Options): IUser {
  // 返回符合IUser接口结构的对象
  return {
    async infomation(): Promise<object> {
      // 替换为实际业务逻辑,示例为接口请求逻辑
      const response = await fetch("/api/user/info", {
        method: "GET",
        body: options ? JSON.stringify(options) : undefined
      });
      return response.json();
    },
    async groups(): Promise<object[]> {
      // 替换为实际业务逻辑
      const response = await fetch("/api/user/groups");
      return response.json();
    }
  }
}

如果不需要使用async/await语法,也可以直接返回Promise实例,写法如下:

function user(options?: Options): IUser {
  return {
    infomation(): Promise<object> {
      // 示例逻辑
      return Promise.resolve({ username: "demo", userId: options?.userId });
    },
    groups(): Promise<object[]> {
      return Promise.resolve([{ groupId: 1, groupName: "default" }]);
    }
  }
}
类型提示效果

实现完成后,当输入user(/* 传入对应options参数 */).时,TypeScript会自动推导返回值为IUser类型,编辑器会自动提示接口下定义的infomation、groups成员方法,满足自动补全需求。

提示:如果接口中的infomation为拼写失误(正确拼写为information),建议同步修改接口定义和实现中的方法名,避免后续调用时出现拼写错误。

内容的提问来源于stack exchange,提问作者Vijay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 02:01:08