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

TypeScript新手求助:调用UserService.searchStaff时提示属性不存在错误

解决“Property 'searchStaff' does not exist on type 'typeof UserService'”错误

嘿,我来帮你理清这个问题!你遇到的报错本质是调用方式和导出方式不匹配,咱们一步步来解决:

错误原因分析

你写的代码里,最后一行是export default new UserService();——这意味着你导出的是UserService类的一个实例对象,而不是类本身。但你调用的时候却用了UserService.searchStaff(),这是在试图直接调用类的静态方法,可你的searchStaff是实例方法,所以TypeScript会报错说类本身(typeof UserService)上没有这个属性。

两种解决方案

方案1:用导出的实例调用方法

既然你已经导出了实例,那直接用这个实例来调用方法就好。调整你的调用代码:

// 导入的时候,拿到的是已经实例化好的对象
import userService from './你的文件路径';

// 用实例调用实例方法
const result = userService.searchStaff();

方案2:把方法改成静态方法

如果你确实想通过UserService.searchStaff()这种类名调用的方式,那需要把searchStaff改成静态方法,给它加上static关键字:

import axios from "axios";
import { Observable } from "rxjs";

class UserService {
  // 加上static关键字,变成类的静态方法
  public static searchStaff(): Observable<any> {
    return Observable.fromPromise(axios.get("./staffs/search"));
  }
}

// 现在导出类本身,而不是实例
export default UserService;

这样再用const result = UserService.searchStaff();就不会报错了。

两种方案的选择

  • 如果你需要在UserService里维护一些实例状态(比如用户token、请求拦截器的配置等),选方案1,用实例的方式更合适。
  • 如果searchStaff只是一个不需要依赖实例状态的工具方法,选方案2,静态方法调用起来更直接。

内容的提问来源于stack exchange,提问作者Suyog K.C

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:42:30