Visual Studio Code 中的异步智能感知 | 节点

用户3781737

我经常编写异步模块,由于它们的异步特性,我会在一些初始化代码中要求、解析和分配这些模块。例如:

var asynchronousModule;


function doSomethingUsingMyLoadedModule() {
    // Ideally intellisense would be able to do its thing for asynchronousModule right here
    asynchronousModule._doSomething();
}


// initializer
(async () => {
    asynchrousModule = await require('my-custom-async-module');
})();

然而,因为asynchronousModule直到doSomethingUsingMyLoadedModule函数被声明后才被分配,智能感知不能asynchronousModule在该函数内自动完成/自动填充

所以我想知道是否有一种方法可以明确地告诉智能感知在声明时过早地为我们的变量赋值,使用内联注释等。例如,第一行是这样的:

var asynchronousModule; // vsc-intellisense assign-async-import my-custom-async-module

那会很棒,但可能是一厢情愿。但是,也许还有其他一些方法可以利用异步模块的智能感知而不必将我的整个文件包装在异步函数中?我的意思是将我的代码重写为这样的:

(async () => {
    const asynchrousModule = await require('my-custom-async-module');

    function doSomethingUsingMyLoadedModule() {
        asynchrousModule._doSomething();
    }
})();

虽然这将允许智能感知工作,并且在这个示例中它实际上看起来不错,但我真的不喜欢将整个文件的内容添加标签,尤其是当文件变大时,所以这不是我理想的解决方案。

用户3781737

当我第一次问这个问题时,我是一个天真的开发人员,不明白在我的编辑器中为 IntelliSense 编写 JSDoc 式语法时我实际使用了多少 TypeScript。但是现在,作为一个更聪明的开发人员,一个月后会改变,我对此有了答案。

请注意,我并不一定说这是一个伟大的想法,并承诺覆盖你的模块的出口对象,但在过去这样的工作对我来说,和至少是以下为传统的代码准确的IntelliSense我可以使用:

/**
 * @template T
 * @typedef  {T extends Promise<infer Value> ? Value : T} PromiseValue
 */

/** @type {PromiseValue<import('my-custom-async-module')>} */
var asynchronousModule;

@typedef标签声明的类型PromiseValue,我们用它来提取什么承诺做出决议。然后使用@type标签,我们导入异步模块并将其包装在我们的PromiseValue实用程序中以提取其解析对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Visual Studio Code中启用智能感知?

AngularJS + Visual Studio Code智能感知

如何在Visual Studio Code中为自定义angularjs模块添加智能感知?

用于自举脚本中全局注册模块的Visual Studio Code智能感知

Visual Studio Code中的HTML5 canvas智能感知

在Visual Studio中配置触发智能感知完成的键

如何仅在Visual Studio的智能感知中查看事件?

Visual Studio中的HTML角度智能感知

Visual Studio 2013 VB智能感知

Visual Studio 2019 智能感知替换

Visual Studio代码智能感知模式

Visual Studio 2012 ExtJS智能感知

Visual Studio Code智能感知随时显示一个建议

在 Visual Studio Code 上使用空格、括号或句点触发智能感知自动完成

在Visual Studio 2015中获取用于JavaScript函数表达式的智能感知

如何在 JSDoc 中为 Visual Studio 智能感知记录回调参数?

Angular上html文件中的引导程序类没有智能感知-Visual Studio 2017

如何在Visual Studio-Xamarin中为axml文件启用智能感知?

在Visual Studio 2015中浏览智能感知列表的键绑定是什么?

在调试过程中未出现Visual Studio 2015智能感知

是否有任何热键可以在Visual Studio中智能感知Lambda?

如何在Visual Studio 2013中禁用LESS智能感知?

自定义代码片段未显示在 Visual Studio 代码的智能感知中

如何在Visual Studio 2017中为Unity启用智能感知

F#类型提供程序减慢了Visual Studio 2017中的智能感知

如何在Visual Studio代码中为张量流启用智能感知

如何在Visual Studio 2015中为自定义xml添加智能感知?

如何在 Visual Studio for C++ 中启用智能感知完成?

为什么Visual Studio Code对Unity关键字(如transform或Vector3)没有智能感知?