JavaScript/Node.js中的VSCode定义提供程序

JavaScript/Node.js中的VSCode定义提供程序,javascript,node.js,typescript,vscode-extensions,Javascript,Node.js,Typescript,Vscode Extensions,我想在我的VSCode扩展中实现一个DefinitionProvider。 但我不确定如何在Javascript中实现这一点,因为registerDefinitionProvider不接受我的类 module.exports = class ALDefinitionProvider { provideDefinition(textDocument, position, token) { console.log(textDocument); console.

我想在我的VSCode扩展中实现一个DefinitionProvider。 但我不确定如何在Javascript中实现这一点,因为registerDefinitionProvider不接受我的类

module.exports = class ALDefinitionProvider {
    provideDefinition(textDocument, position, token) {
        console.log(textDocument);
        console.log(position);
    }
}
错误消息: 案文如下: “ALDefinitionProvider”类型的参数不能分配给“DefinitionProvider”类型的参数。 “ProviderDefinition(…)”返回的类型在这些类型之间不兼容。 类型“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> {
    }
}
类GoDefinitionProvider扩展了vscode.DefinitionProvider{
提供定义(
文档:vscode.TextDocument,位置:vscode.position,标记:vscode.CancellationToken):
那布尔{
}
}
有人知道如何在Javascript/Node.js中实现这一点吗?:)

是的,是我的错。。。 我为我的函数添加了一个承诺,现在它工作了

module.exports = class ALDefinitionProvider {
    provideDefinition(textDocument, position, token) {
        return new Promise((resolve) => {
            console.log(textDocument);
            console.log(position);
            return new Location(Uri.parse(''), position);
        });
    }
}

“registerDefinitionProvider不接受我的类”-您遇到了什么错误?@Bergi我在我的问题中添加了错误消息:),因此这是一个typescript错误!是的,您需要更改
providedDefinition
方法的类型以返回
位置(或其数组,或
LocationLink
s)。“我不知道如何用这个实现它”-否则你知道如何实现它吗?你希望你的扩展提供什么定义?哦,我的错。。。我带着一个承诺返回了那个地点,它成功了。“您希望扩展提供什么定义?”-变量和函数