实现接口的类类型中不存在属性,编译器错误

时间:2018-05-02 06:04:59

标签: typescript

在使用TypeScript的应用中,我遇到了这个问题,我不知道如何解决或者为什么会这样。

在模块中我有这种类型的代码

// Api.ts
interface ApiInterface {
  signIn(user: object): AxiosPromise
  authenticated(): AxiosPromise
  getCurrentUser(): AxiosPromise
}

export class Api implements ApiInterface {
  public signIn() {
     ...
  }

  public authenticated() {
     ...
  }

  public getCurrentUser() {
     ...
  }    
}

但问题是我在另一个文件中遇到编译错误,我尝试使用Api类,如下所示:

import { Api } from './Api'

async function foo() {
  const isAuthenticated = await Api.authenticated() // ERROR
  ...
}

错误说明:已对其进行身份验证'类型'类型Api'

我如何通过这个?编译器不知道Api类实现了ApiInterface吗?

1 个答案:

答案 0 :(得分:3)

您正在导入该类实例上存在的成员Api的类authenticated。您需要使用new运算符

创建实例
import { Api } from './Api'

async function foo() {
  const api = new Api();
  const isAuthenticated = await api.authenticated() // ERROR
  ...
}