Bug报告
🔎 搜索词
🕗 版本与回归信息
typescript版本:4.6.2
⏯ Playground链接
💻 代码
文件结构
src/types.ts
export interface ITest {
value: number;
}
src/types.declaration.d.ts
import * as types from "./types";
declare global {
namespace ns {
export { types };
}
}
src/index.ts
const test: ns.types.ITest = {
value: 1,
};
tsconfig.json
{
"compilerOptions": {
"rootDir": "./src/"
}
}
🙁 实际行为
在vscode中,打开"src/index.ts",然后右键点击单词"ITest",它只会在"src/types.ts"中找到接口ITest声明;在"src/index.ts"中的引用无法找到。
🙂 预期行为
"Find All References"应该能找到"src/types.ts"中的接口ITest声明和"src/index.ts"中的引用。如果在文件"src/index.ts"的顶部添加'import * as _ from './types';',那么一切都会正常工作。
6条答案
按热度按时间9w11ddsr1#
如果
types
不是重新导出(即在types.declaration.d.ts
中内联声明),则该方法有效。(仅作说明,不提出缓解措施。)ztmd8pv52#
Also doesn't work with
k75qkfdt3#
嗯,直接原因是
getSymbolScope
不知道这个符号是全局的,所以它没有将index.ts
包含在搜索集合中。如果你硬编码一个全局搜索,它可以正常工作(因为index.ts
显然有一个文本匹配,GTD在这个匹配上工作)。hgqdbh6s4#
请让RyanCavanaugh确认此代码是否合法。
ars1skjm5#
嗯,直接原因是
getSymbolScope
不知道这个符号是全局的,所以它没有将index.ts
包含在搜索集中。如果你硬编码一个全局搜索,它可以正常工作(因为index.ts
显然有一个文本匹配,GTD在这个匹配上工作)。@amcasey
感谢你的调查。我明白你的意思,但是为什么当我在文件"src/index.ts"的顶部添加'import * as _ from './types';'时,它可以正常工作?这个语句会让index.ts被包含在全局范围内吗?
fhg3lkii6#
@xusd320 在没有调试它的情况下,我的猜测是导入足以将index.ts包含在感兴趣的文件列表中,此时文件内的所有匹配项都被视为范围内。