【问题标题】:typescript class method type annotations are not being exported未导出打字稿类方法类型注释
【发布时间】:2022-01-17 15:30:10
【问题描述】:

我在文件cso-api.ts中有一个类定义:

export default class CsoAPI extends RESTDataSource {
  constructor() {
    ...
  }

  async getNamePopularityDataByYear(year:number): Promise<NamePopularityData> {
    ...

由于此函数被注释为返回类型为Promise&lt;NamePopularityData&gt;,那么为什么我在导入第二个文件并将其分配给字符串时没有收到警告/错误?

import  CsoAPI from '../apis/cso-api';
...
const nameData:string = await CsoAPI.getNamePopularityDataByYear(year)

当鼠标悬停在导入的函数上时,VSCode 也会显示错误的类型:

【问题讨论】:

  • 如果你将鼠标悬停在CsoAPI上,你有什么类型的?
  • @АлексейМартинкевич 不显示类型只是(alias) class CsoAPI import CsoAPI

标签: typescript visual-studio-code types


【解决方案1】:

getNamePopularityDataByYear 是根据类CosAPI 的给定定义的实例方法。要使用它,我们应该在 CosAPI 的实例上调用它,比如...

const nameData: string = await new CsoAPI().getNamePopularityDataByYear(year);

如果我们想像上面提到的那样使用它,那么我们必须用static关键字来限定函数getNamePopularityDataByYear,比如...

...
static async getNamePopularityDataByYear(year:number): Promise<number> {
...
}

选择使用该功能的方式并进行相应调整。

【讨论】:

  • 感谢 Nalin,我让它作为静态方法工作。我实际上是在其他地方实例化(我在试图使问题更清晰时不小心编辑掉了),所以它似乎会将类型信息作为静态方法导入,而不是作为实例化的类方法导入。可能是我在打字稿中不理解的东西......
猜你喜欢
  • 2021-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-26
  • 1970-01-01
  • 2020-06-25
相关资源
最近更新 更多