TypeScript 奇怪的是,具有相同名称的导出接口和变量

lhcgjxsq  于 5个月前  发布在  TypeScript
关注(0)|答案(3)|浏览(79)

TypeScript版本:

3.5.3。同时在所有从2.7.2到3.5.1的Playground版本上复现。在2.4.1上不复现。

搜索词:

接口导出任何重复

代码

export interface A {
}
const A = {
};

预期行为:

快速查看const A显示类型{}

实际行为:

快速查看const A显示类型any
如果export被移除,问题就会消失。

Playground链接:

Playground

相关问题:

#31031

eimct9ow

eimct9ow1#

TypeScript/src/services/symbolDisplay.ts
Line 149 in fa3173f
| | type=isThisExpression ? typeChecker.getTypeAtLocation(location) : typeChecker.getTypeOfSymbolAtLocation(symbol.exportSymbol||symbol,location); |
symbol has exportSymbol which refers to the exported interface, for that reason typeChecker.getTypeOfSymbolAtLocation returns type for exportSymbol not for requested symbol. Is there any reason why symbol has exportSymbol which don't relate to each other?
cc @DanielRosenwasser@RyanCavanaugh

g6baxovj

g6baxovj2#

@andrewbranch 或 @weswigham 可能对此了解更多,但似乎正确的做法是尝试匹配每个符号的语义含义(我认为有 getSemanticMeaning )。

voj3qocg

voj3qocg3#

我们应该发出一个“所有声明都必须导出或本地”的错误,据我所知。

相关问题