【发布时间】:2020-07-14 18:13:15
【问题描述】:
我想在我的 VSCode 扩展中实现一个 DefinitionProvider。 但我不确定我必须如何在 Javascript 中执行此操作,因为 registerDefinitionProvider 不接受我的课程。
module.exports = class ALDefinitionProvider {
provideDefinition(textDocument, position, token) {
console.log(textDocument);
console.log(position);
}
}
错误信息:
这里的文字:
“ALDefinitionProvider”类型的参数不可分配给“DefinitionProvider”类型的参数。
'provideDefinition(...)' 返回的类型在这些类型之间不兼容。
类型 'void' 不可分配给类型 'ProviderResult
我是这样注册的:
vscode.languages.registerDefinitionProvider('al', new ALDefinitionProvider());
我也尝试过类似的方法,但我不确定如何使用它来实现它:
class GoDefinitionProvider extends vscode.DefinitionProvider {
provideDefinition(
document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken):
Thenable<vscode.Location> {
}
}
有谁知道如何在 Javascript/Node.js 中实现这一点? :)
【问题讨论】:
-
"registerDefinitionProvider 不接受我的课程" - 你遇到了什么错误?
-
@Bergi 我在我的问题中添加了错误消息:)
-
所以这是一个打字稿错误!是的,您需要更改
providedDefinition方法的类型以返回Location(或它的数组,或LocationLinks)。 “我不确定如何用这个实现它” - 你知道如何实现它吗?你想要你的扩展提供什么定义? -
哦,好吧,我的错...我用承诺返回了位置,它起作用了。 “你希望你的扩展提供什么定义?” - 变量和函数
标签: javascript node.js typescript vscode-extensions