javascript - 命名导出的“转到定义”在 JavaScript 和 TypeScript 之间的工作方式不同?
问题描述
给定这样的文件结构:
├── main.js
└── util
└── stuff.js
还有一些内容是这样的:
// stuff.js
export function add(a, b) {
return a + b;
}
// main.js
import * as maths from './util/stuff.js'
maths.add(1, 2)
当我尝试对.add()
main.js 中的调用使用 Go To Definition 时,我能够看到函数签名以及 JSDoc 中用于代码完成和类型检查的任何类型。但是,当我尝试对其进行“转到定义”时,我会永远在窗口顶部看到加载动画。默认导出似乎没有这个问题。
我想我会看看这是否也发生在实际的 TypeScript 项目中,但是将文件重命名为 .ts 会使 Go To Definition 按预期工作。尽管已经知道 JSDoc,但语言服务器是否存在阻止它在 .js 文件时工作的东西?作为参考,这是我现在拥有的 jsconfig.json:
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"baseUrl": ".",
"paths": {
"@base/*": ["base/*"],
"@test/*": ["test/*"]
},
"checkJs": true,
"jsx": "preserve"
},
"exclude": ["node_modules", "**/node_modules"]
}
我已经尝试将module
选项切换到es2015
并且esnext
只是为了确保它不是导致问题的选项。
解决方案
推荐阅读
- regex - 我有一个特定的正则表达式要制作,但是这个 1 测试出错了
- python - 有没有办法在诅咒中获取大文本?
- html - CSS Grid:自动高度,包括 1 列和多个内容块?
- c++ - scanf的字符变量存储问题
- r - 用传单复制闪亮的 tmap?
- flutter - 如何在颤振中创建自定义图表
- java - 如何使用过滤压缩多个 Flux 流
- c++ - 使用二进制搜索打印在结构向量中找到的大量值
- symfony - Sulu 2.0:如何将自定义 css 和 js 添加到管理视图
- sql - SQL Server STRING_AGG 和 group by 用于一个表中的列,但不用于另一个表中的列