vscode Intellisense NodeJs

agu*_*tin 9 javascript node.js visual-studio-code

在vscode中,开发人员可以将鼠标悬停在代码中的变量和对象的方法和属性上,并向您显示有关它们的信息.不幸的是,一旦我们将代码传递给另一个文件中的模块(因为javascript是静态类型的),这就失去了.有没有办法让我明确地输入传递给模块的参数?或者也许某种源图?我遇到问题的一个例子:

app.js

var express = require('express')
var app = express()

var routes = './routes/route.js'
Run Code Online (Sandbox Code Playgroud)

route.js

module.exports = function(app) {
    // Hovering over app doesn't show the intellisense like it does in app.js
}
Run Code Online (Sandbox Code Playgroud)

更新

我一直在寻找答案,但没找到答案.这是我最接近它的工作,但由于某种原因,编辑器不想应用该类型.见下文:

route.js

import Express from 'Express'

/**
* @param {Express} app
*/        
module.exports = function(app) {
    // Hovering over app doesn't show the intellisense like it does in app.js
}
Run Code Online (Sandbox Code Playgroud)

Sha*_*tin 6

...因为 javascript 是静态类型的。

JavaScript 不是静态类型的。它是动态类型的。

有什么办法可以让我显式键入传递给模块的参数?

是的。使用打字稿。它提供了可选的静态类型

解释

在以下屏幕截图中,Intellisense 确实有效。它显示的app是 类型any。这是我们可以用 JavaScript 做的最好的事情,因为 JavaScript 是动态类型的。在编译时,app确实可以any类型化。动态类型意味着仅在运行时检查类型。

在此处输入图片说明


Raz*_*lex -3

我认为更好的解决方案是这样的:

function myFunc() {
    //damn code
}

export default myFunc
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,该函数没有被包装,但需要 es6 ;)