为什么使用类型定义文件时返回变量在悬停时未显示正确的类型?

时间:2020-07-08 05:05:55

标签: typescript visual-studio-code

我正在使用类型定义文件声明我的类型,但我无法获取保存我的键入函数的返回值的变量以在悬停时显示正确的类型。请注意,我是typsecript的新手。

.d.ts文件具有:

interface MatchesFound {
  allResults: string[],
}    
export function findMatches(searchTerm: string, options: FindMatchOptions): Promise<MatchesFound>

在我使用该函数的js文件中,当我将鼠标悬停在函数本身上时,我会看到正确定义的类型。但是,当我将鼠标悬停在返回值上时,看不到MatchesFound或Promise,而是看到了任何内容。

编辑:

这就是我激活函数的方式

let matches;
try {
  matches = findMatches('foo', {...options});
}

知道为什么吗?

2 个答案:

答案 0 :(得分:2)

let matches;隐式地将类型any分配给matches

您可以使用正确的类型对其进行声明:

let matches: Promise<MatchesFound>

或联接声明和初始化:

let matches = findMatches('foo', {...options}); // Type Promise<MatchesFound>

答案 1 :(得分:0)

Mike S.的回答确实有助于找出问题的原因,但是建议的解决方案没有用,因为我没有在JavaScript中使用打字稿,这只是一个定义文件,可以避免构建过程。

我的变量声明需要在try块之外。为了解决该问题,我使用了jsDoc来指定变量的类型,并与侧面的typescript一起很好地工作:

/** @type {import('../bin/findMatch').MatchesFound} */
let matchesFound;