我一直在使用Visual Studio的JavaScript Intellisense功能一段时间,并且大部分都对它为标准API提供建议的程度感到满意,但我发现我无法让Visual Studio了解配置对象(即具有多个可选项的单个对象)或者必需的属性作为函数的参数).
该官员JSDoc语法表明,如果一个参数,预计将有属性,您创建一个单独的@param线为每使用点表示法:
/**
* @param {Object} config
* @param {String} config.name
* @param {Number} config.gold
*/
function do_it(config) { ... }
Run Code Online (Sandbox Code Playgroud)
但是,Visual Studio不承认这一点-它呈现config,config.name以及config.gold作为三个独立的顶级参数.
更糟糕的是,方法体内的自动完成功能也无法识别参数,更不用说它们的类型了:
在Visual Studio中看起来更接近的唯一解决方案是使用适当的文档(@constructor和@property标记)编写永不调用的构造函数,这使我编写了大量死代码并且还违反了JavaScript的无类思维(这是我首先使用配置对象的原因).它甚至不让我写配置对象!
不仅如此,我也知道Visual Studio不需要它.举例来说,当我写了一个调用这个库函数,它能够收集到的参数对象需要的属性叫id,source和target,当我创建了一个对象字面函数的参数建议那些名字-并没有一个单一的线文件.据推测,它来自于使用它们的简单事实:
当然,如果这些属性不在对象上并且类型不正确,那么该方法会抛出异常,但仍然如此.
编辑:我最近能够使用对象文字参数在我自己的代码中复制效果 - 我用一个明确定义的对象调用了一个函数,当我在代码中的其他位置再次调用该函数时,它给了我智能感知建议.但我仍然没有函数体内的类型信息或语义访问.
Visual Studio显然理解配置对象的概念,并且正在做一些提供建议属性的逻辑.那算法是什么?如何在不破坏我的代码的情况下利用它?
javascript documentation javascript-intellisense jsdoc visual-studio-2015
我为node.js项目提供了大量的json模式.我可以以任何方式使用它们:
?
我正试图在Visual Studio Code中为我的javascript代码获取正确的Intellisense建议.特别是,我有以下AngluarJS服务:
/// <reference path="definitelytyped/angularjs/angular.d.ts" />
var module = angular.module( 'testApp', [] );
module.factory( 'backend', function ( $http ) {
return {
"getComments": function HoverHereToSeeType( post ) {
/// <summary>Retrieves comments from the backend</summary>
/// <param name="post" type="string">Post to retrieve comments for</param>
return $http.get( "/rest/" + post );
}
};
} )
Run Code Online (Sandbox Code Playgroud)
我以为我应该使用XML文档注释,但它们似乎不起作用 - 当我将鼠标悬停在HoverHereToSeeType参数上时显示为"any"(而返回值是使用angular.d.ts正确推断的).所以问题的第一部分是:我如何在函数中注释类型?
实际尝试使用该服务时,问题的第二部分出现了:
module.controller( 'MyCtrl', function( backend ) {
backend.getComments( "test" );
} );
Run Code Online (Sandbox Code Playgroud)
我知道IntelliSense不理解Angular的依赖注入,所以我需要注释backend的类型.但是我该如何引用这种类型呢?
简而言之:如何backend.getComments()在第二个片段中为调用获取正确的Intellisense ,即参数必须是字符串的信息,返回的值将是ng.IHttpPromise?
javascript javascript-intellisense angularjs visual-studio-code
出于某种原因,在Visual Studio 2012中调试ASP.NET Web应用程序后,我失去了JavaScript intellisense.
你可以看到,当我开始时,我有完整的智能感知.在下图中我得到了knockoutjs intellisense:

但是,一旦我调试应用程序,我就失去了智能感知.例如,如果我按F5调试[更新:顺便说一句,这也发生在CNTL-F5]当我返回到我的代码时,我失去了智能感知:

我发现让intellisense再次工作的唯一方法是使用工具 - > 导入和导出设置 - > 重置所有设置.问题是这只会继续工作,直到我再次运行应用程序.
有谁知道如何永久解决这个问题?谢谢!
更新:看起来这与ReSharper有关(我使用的是7.0.1).如果我在ReSharper的General Options下将它从ReSharper更改为Visual Studio intellisense,问题就会消失.我想这会稍微改变我的问题 - 当使用ReSharper时,如何使用intellisense为knockoutjs这样的框架工作?
假设我在AngularJS中有一个控制器:
myApp.controller('SearchController',
function ($scope, UserService) {
// for intellisense, UserService is undefined here
var user = UserService.getUsers().then(function(data){
// yada yada
}, function(err){
// yada yada
});
});
Run Code Online (Sandbox Code Playgroud)
但是,在我的intellisense文件中,我可以动态注入UserService来获取它的函数:
intellisense.addEventListener('statementcompletion', function (event) {
// tried doing this, but doesn't work!
// event.target = {};
var injector = angular.injector(['ng', 'myApp']);
var dependency = injector.get(event.targetName);
event.items = [];
for (method in dependency) {
intellisense.logMessage(method);
event.items.push({ name: method, kind: 'field', value: function () { } });
}
});
Run Code Online (Sandbox Code Playgroud)
现在,如果我有一个全局变量(或函数变量)定义为UserService = {}我的控制器函数并在其中输入UserService. …
javascript intellisense javascript-intellisense angularjs visual-studio-2012
我使用的是 Visual Studio Code 1.17.1 版。
在*.js文件中,当我输入时,我document.querySelector("#elementId").style.没有关于样式(如边距、显示等)的 IntelliSense 提示。之后甚至没有onclick事件提示document.querySelector("#elementId").
我不使用任何 npm 包。它只是一个简单的 html\css\js 项目。
如何打开正确的 IntelliSense 提示?谢谢。
将 Visual Studio 2019 与 ReSharper(均为最新版本)一起使用,我无法获得智能感知来停止抱怨 ECMAScript 2020 功能,例如空合并运算符 (??)。
该代码有效,但编辑器认为这是一个错误,这很烦人。这是我看到的:
我尝试在 VS 中将项目的 TypeScript Build ECMAScript 版本设置为 ECMAScript 2020:ReSharper ECMAScript 版本设置为“实验性”。有没有人设法让这个工作?
resharper null-coalescing-operator javascript-intellisense visual-studio-2019
我刚开始使用VS Code,我现在对它非常满意!
我来自Notepad ++,我没有找到与我正在做的事情相同"级别"的任何IDE.直到现在!我非常喜欢VS Code正在做的事情以及所有现代集成技术如何帮助我.
但是我想念NPP做的一件事就是文件中单词的自动完成基础.那么我可以在VS Code中做同样的事情吗?
谢谢.
我以前曾经获得自动完成和智能提示,但现在我没有获得自动完成,也没有获得错误的波浪形红线。我该怎么办?请帮忙。我已经花了 2 个小时在 google 上搜索但找不到答案。
其他人也得到了像上面这样的正确建议。我不明白。下面是我的 VsCode 编辑器。
javascript settings autocomplete javascript-intellisense visual-studio-code
我已根据_references.js(http://blog.craigtp.co.uk/post/Javascript-jQuery-Intellisense-in-Visual-Studio-2012.aspx)中设置的引用设置我的IDE以显示JS Intellisense .在这样做时,您必须将JavaScript IntelliSense Reference Group设置为"Implicit(Web)",我已经完成了.一段时间以来,它的工作非常精彩.
然而,在一些看似随机的时间(可能是几小时或几天,但通常不超过一天左右)后,我的JS IntelliSense停止工作.当我返回参考组设置时,我发现参考组已恢复为"隐式(Windows)".
有没有其他人有这个问题?可能是什么造成的,或者这是VS2012中的一个错误(这是发布的版本)?
谢谢!
intellisense ×4
javascript ×4
angularjs ×2
jsdoc ×2
resharper ×2
autocomplete ×1
jsdoc3 ×1
jsonschema ×1
settings ×1
webstorm ×1