搜索词
- JSDoc
@method
@property
- 支持
建议
现在注解功能即将推出,很希望能为 @method
和 @property
(也许还有 @memberof
)添加支持。
我发现了一个 bug ,它只讨论了 #15715 支持,但我认为将它们放在一起看会更有意义,因为它们应该有非常常见的实现方式,而且它们满足整体的目标。至少我认为是这样,我在下面解释了我的理由!
用例
我现在有一些函数,它们可以在类上添加方法和/或获取器,等待 JS/TS 的注解功能。但是假设:当注解功能出现时,这两个标志支持总是需要的(或者至少我认为是这样:我不知道如何在没有这些的情况下让 IntelliSense 工作)!
/**
* Some class
* @class
*/
class Test {
/* whatever */
}
// this adds a #foo() method on the class prototype as well as a #bar getter(/setter)
someMethodAddingABehavior(Test, ...params);
明天有了注解:
/**
* Some class
* @class
*/
@someAnnotationAddingABehavior(...params)
class Test {
/* whatever */
}
示例
我希望能够像这样记录它们:
/**
* What foo is doing is great!
* @method foo
* @param {string} testParam some testing parameter
* @returns {string} some random string
* @memberof Test.prototype
*/
/**
* Bar is awesome too!
* @property {number} bar
* @memberof Test.prototype
*/
someMethodAddingABehavior(Test, ...params);
或者至少能够在类本身中记录它们:
/**
* Some class
* @class
*/
class Test {
/* whatever */
/**
* What foo is doing is great!
* @method foo
* @param {string} testParam some testing parameter
* @returns {string} some random string
*/
/**
* Bar is awesome too!
* @property {number} bar
*/
}
有了这些支持,我希望在完成类型为 Test
的值的属性时,vscode
能够建议给我 foo
方法和 bar
属性。
检查清单
我的建议符合以下准则:
- 这不会对现有的 TypeScript/JavaScript 代码造成破坏性的更改
- 这不会改变现有 JavaScript 代码的运行时行为
- 这可以在不根据表达式的类型生成不同的 JS 的情况下实现
- 这不是一个运行时特性(例如库功能、JavaScript 输出的非 ECMAScript 语法等)
- 这个特性将与 TypeScript's Design Goals 的其他部分保持一致。
5条答案
按热度按时间ih99xse11#
我将支持这个观点。我们的用例是大量的以下形式的类:
extendObservable
的行为与Object.assign
非常相似。然而,我们不能使用以下解决方法,因为它与extendObservable
不向后兼容(我们处于 v3 版本,v4 或更高版本不会覆盖现有属性):yshpjwxd2#
目前是否有解决方法?我正在尝试从一个JS库中构建类型定义(使用
tsc --allowJs
),该库在构造函数函数之外添加了getter/setter属性。我不方便将其转换为更简单的模式(例如,ES6
class
),所以我只能尝试描述它现在是如何工作的,以便生成的类型定义包含添加的属性。thtygnil3#
看起来我们已经等了一段时间了:#7237。
mccptt674#
这个问题可以通过接口和/或明确赋值Assert来解决,这些方法也适用于类属性(请参阅此部分)。
e7arh2l65#
哦,酷,这就是为什么JavaScript中的JSDoc不起作用的原因。真糟糕。这也意味着解决方法不起作用。