TS模板由@mjbvz添加
TypeScript版本:4.0.0-dev.20200607
搜索词
- suggest / suggestions / completions
- dom
- javascript
- VSCode版本:1.45.1
- OS版本:Windows 10
重现步骤:
- 新建JavaScript文件并输入以下代码:
class File {
Method() {
}
}
const file = new File;
file
- 在最后一行放置一个点(
.
),等待出现带有建议的窗口。 - 预期窗口中的列表应包含一个
Method
成员,但实际上却包含了一个Blob
类成员:
似乎VSCode认为它是一个 File
类 for web :
当所有扩展都禁用时,是否会出现此问题?:是
4条答案
按热度按时间slhcrj9b1#
dom
是默认 TS 配置中使用的lib
值之一。在您的情况中,您需要创建一个jsconfig.json
,它明确地不包含dom
在lib
数组中,但具有与您的 Node.js 版本(或其他运行时)相关的库。示例
wooyq4lh2#
根据JavaScript语言规则,局部类文件应覆盖全局类。与之形成对比的是,商业Microsoft Visual Studio Professional 2015 Update 3足够智能,能够正确显示提示:
kknvjkwl3#
@IllusionMH
我不确定这是否与
tsconfig
有关。当我们覆盖浏览器的类时,
dom
无法从tsconfig
中移除的情况如何?c6ubokkw4#
看起来我(部分)关于
dom
在lib
的判断是错误的。TS 在 module scope 中的本地
File
不会有任何问题,但如果没有顶级的import
/export
/require
/module.exports
,它将被视为全局作用域(参见 #18232 )。如果你不打算在全局作用域中工作,添加
export {}
(或其他根据模块格式的导入/导出)应该能解决问题。对于全局作用域,情况变得更加复杂——TS 有太多的声明,我们不希望它们在全局作用域中被覆盖(相关问题 #29237 )。
同时,我可以猜想它只是从
lib
中排除了dom
,并提供了自己的“修补”副本,这样就可以立即使用。@olvap80 不确定 VS 2015 默认使用的配置和 TS 版本(如果有的话)。
/assign mjbvz