因此,新语言服务Salsa接近完成(在1.8.0-insider
中设置了一些环境变量)您可以通过jsDoc
注释获得智能感知支持。这要归功于TypeScripts对它的支持。
然而,我的问题仍然是AngularJS服务或自定义类型的控制器。请注意,这是针对JavaScript代码的,而不是TypeScript。
让我快速演示我的设置,希望能够解释。
我将我的服务,控制器等定义为CommonJS模块(启用框架无关代码重用,更容易组织)
//service.js
/**
* @typedef {Object} someObj
* @prop {int} value
*/
/**
* Do some action
* @param {string} val
* @returns {someObj}
*/
exports.test = function(val) {
return {};
}
当我require
在我的项目中的任何地方VSCode获取JSdoc评论并给我正确的intellisense,辉煌。
所以传统上我会将其插入角度如下:
angular.module('myModule').service('service', () => require('./service'));
现在是我精彩的全新智能梦想被粉碎的地方。 理解当我在任何地方注入该服务时,所有智能感知都会丢失,因为VSCode和TypeScript可以理解错综复杂或每个框架的DI系统。
所以我有点难过了。
我想到了为我的服务,控制器周围的角度包装创建打字。然而,在研究它时,我无法找到将JSDoc世界中定义的类型放入我的定义文件中(我不是TypeScript人)。
我还想过使用jsDoc的@module
语法来定义我的所有CommonJs服务,控制器等。然后使用该模块设置我在我的自定义中注入的每个函数参数的类型模块,但我并不完全确定能够查看文档。您似乎必须使用@module
调用中预期的路径指定require
标记,该路径不会与相对必需的模块一起使用,其中该路径会发生变化。文档也没有提到能够在@Param
标记中使用它来说this variable is this module
。
我考虑的另一个选项是通过提供缺失的链接来帮助VSCode的智能感知的一些扩展。在定义服务并将其传递到注入该服务的实例时,使用已知的intellisense信息。但是,我无法找到任何此类扩展,即使可以创建。
由于Salsa和打字稿在VSCode的智能感知方面取得了进步,这有可能吗?我对JSDoc的支持感到非常满意,但我想太快了。
我将非常感谢任何帮助,或者我可以改变我的工作方式以获得所需结果的任何变通方法。