How can I hide #39;private#39; methods with JSDoc Typescript Declarations?(如何使用JSDoc类型脚本声明隐藏私有方法?)
本文介绍了如何使用JSDoc类型脚本声明隐藏私有方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
假设我有一个JavaScript类
/**
* @element my-element
*/
export class MyElement extends HTMLElement {
publicMethod() {}
/** @private */
privateMethod() {}
}
customElements.define('my-element', MyElement);
和一个声明文件,使用declaration
和allowJs
生成:
export class MyElement extends HTMLElement {
publicMethod(): void;
/** @private */
privateMethod(): void
}
我还在构建后脚本中将其连接到声明文件:
declare global { interface HTMLElementTagNameMap { 'my-element': MyElement; } }
在打字文件中使用此元素时,我可以访问自动完成中的privateMethod
。
import 'my-element'
const me = document.createElement("my-element")
me.// autocompletes `privateMethod`
如何指示tsc
将使用@private
JSDoc标记批注的任何方法、字段或属性标记为私有?
推荐答案
根据JSDoc文档,使用/** @private */
是正确的语法,但这不是TypeScrip处理它的方式。您将需要利用类型脚本语法来处理此问题,它不能单独与JSDoc一起工作。
TypeScript 3.8 and up supports ES6 style private fields。您可以在方法的开头使用#
符号表示私有字段,如下所示:
class Animal {
#name: string;
constructor(theName: string) {
this.#name = theName;
}
}
// example
new Animal("Cat").#name;
Property '#name' is not accessible outside class 'Animal' because it has a private identifier.
或者,TypeScript also allows you to declare a field as private使用private
标记,并将提供所需的结果。这样做不会在自动完成过程中显示privateMethod
(至少对我来说不会)。
/**
* @element my-element
*/
class MyElement extends HTMLElement {
publicMethod() {}
/** @private */
private privateMethod() {}
}
let element = new MyElement()
element.privateMethod()
// Error: Property 'privateMethod' is private and only accessible within class 'MyElement'.
这里有一个使用VS Code IntelliSense的示例。
这篇关于如何使用JSDoc类型脚本声明隐藏私有方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何使用JSDoc类型脚本声明隐藏私有方法?


猜你喜欢
- Fetch API 如何获取响应体? 2022-01-01
- Flexslider 箭头未正确显示 2022-01-01
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- 失败的 Canvas 360 jquery 插件 2022-01-01
- addEventListener 在 IE 11 中不起作用 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- 400或500级别的HTTP响应 2022-01-01
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01