&引用;转到“定义”;对于命名导出,JavaScript和TypeScript的工作方式不同吗?

&引用;转到“定义”;对于命名导出,JavaScript和TypeScript的工作方式不同吗?,javascript,typescript,visual-studio-code,go-to-definition,Javascript,Typescript,Visual Studio Code,Go To Definition,给定如下文件结构: ├── main.js └── util └── stuff.js 有些内容是这样的: ├── main.js └── util └── stuff.js //stuff.js 导出功能添加(a、b){ 返回a+b; } //main.js 将*作为数学从“/util/stuff.js”导入 数学。加(1,2) 当我尝试在main.js中调用.add()时使用Go to Definition,我能够看到函数签名以及JSDoc中用于代码完成和类型检查的任何

给定如下文件结构:

├── main.js
└── util
    └── stuff.js
有些内容是这样的:

├── main.js
└── util
    └── stuff.js
//stuff.js
导出功能添加(a、b){
返回a+b;
}
//main.js
将*作为数学从“/util/stuff.js”导入
数学。加(1,2)
当我尝试在main.js中调用
.add()
时使用Go to Definition,我能够看到函数签名以及JSDoc中用于代码完成和类型检查的任何类型。然而,当我尝试去定义它时,我看到加载动画永远在窗口的顶部。默认导出似乎没有这个问题

我想我应该看看在实际的TypeScript项目中是否也会发生这种情况,但将文件重命名为.ts会使Go to Definition按预期工作。当语言服务器是一个.js文件时,是否有什么东西阻止它工作,尽管它已经知道JSDoc了?以下是我现在拥有的jsconfig.json供参考:

{
    "compilerOptions": {
        "target": "es6",
        "module": "commonjs",
        "baseUrl": ".",
        "paths": {
            "@base/*": ["base/*"],
            "@test/*": ["test/*"]
        },
        "checkJs": true,
        "jsx": "preserve"
    },
    "exclude": ["node_modules", "**/node_modules"]
}
我已尝试将
模块
选项切换到
es2015
esnext
以确保该选项不会导致问题