jsdoc 相关问题

JSDoc是一种用于向JavaScript源代码添加内联API文档的语法。这与解析和操作遵循JSDoc语法的代码的各种工具不同。

使用 redux 和 redux-toolkit 操作函数调用函数时,JSDoc 注释的显示方式不同

经过多年的老派从头开始 Redux 后,我正在尝试 Redux 工具包。使用 createSlice,我定义了我的操作,并带有一些 JSDoc 注释: 导出 const viewBuilderSlice = createSlice({ 不...

回答 1 投票 0

JSDoc - 如何记录代码区域

我已经开始使用 JSDoc,到目前为止这是一件很棒的事情,但我想记录我的代码部分,例如 Visual Studio 有 #region。 我应该把它放在像这样的评论块中吗? /** *

回答 2 投票 0

用于运行时验证的 JSDoc 类型

我们目前正在考虑将具有类型/类型安全性的 JSDoc 添加到我们的项目中。与 Typescript 相比,我们更喜欢带有类型的 JSDoc,因为我们编写的主要是自包含函数,并且不希望 ov...

回答 1 投票 0

如何解决“断言要求调用目标中的每个名称都使用显式类型注释进行声明.ts(2775)”?

我有下面的 JavaScript 代码,并且我正在使用 TypeScript 编译器 (TSC) 根据 Typescript 文档 JSDoc 参考提供类型检查。 const 断言 = require('断言'); 常量摩卡=重新...

回答 2 投票 0

如何用JSDoc输入自定义商店的订阅方法

给出一个简单的自定义商店工厂功能 /** * @template T 在存储中处理的通用数据 * @typedef {import('svelte/store').Readable} 可读 */ /** * @typedef {Object} MyCusto...

回答 1 投票 0

对 createAsyncThunk 生成的动作创建者和参数的打字支持

我正在关注 Redux Essentials 教程,了解如何使用 createAsyncThunk 来生成 Thunk。在他们的示例中,他们创建了一个像这样的 thunk: 导出常量 addNewPost =

回答 3 投票 0

如何在 TypeScript 对象上使用 typedef?

我用 JavaScript (.js) 编写了以下代码: /** * @typedef {Object} 账户类型 * @property Regular - 用户有用户名和密码 * @property HotspotMAC - 用户的用户名位于...

回答 1 投票 0

如何对类型化对象函数参数的字段执行 Typescript JSDoc?

下面是一个 Typescript 函数签名 x,它接受 ABC 作为可选参数。如果传入ABC,则a和b为必填字段。 异步 x(选项:ABC = {}):Promise 接口...

回答 2 投票 0

为什么当我添加 onchange 时 Typescript 错误会消失?

在 VSCode 中,如果启用了适当的设置,则以下 .html 文件将显示错误: ... 在 VSCode 中,如果启用了适当的设置,则以下 .html 文件将向您显示错误: <!DOCTYPE html> <html> <body> <div> <select> </select> </div> <script> // @ts-check /** * @type {string} */ const data = 0; </script> </body> </html> 但是,如果您只是添加一个空的onchange: <select onchange=""> 然后诊断消失!您仍然可以将鼠标悬停在变量上,它会显示它们的正确类型,但不会进行诊断。这是为什么? 我想这就是 VS Code 的工作原理。正如评论中所发现的,在撰写本文时,如果您希望进行 JavaScript 验证,除了将 VS Code 设置为 html.validate.scripts 之外,HTML 文档中任意位置的第一个 JavaScript 代码还需要以 true 指令注释开始。 这支持了一个假设,即 VS Code 所做的事情(可能有更多细微差别,但是)几乎连接了 HTML 文档中的所有 JS 代码,然后将其发送到其 JS 验证位。我尝试深入 VS Code 源代码来验证这一点,我可以看到它。您可以通过以下代码进行追踪: https://github.com/microsoft/vscode/blob/9621add46007f7a1ab37d1fce9bcdcecca62aeb0/extensions/html-language-features/server/src/htmlServer.ts#L276 @ts-check https://github.com/microsoft/vscode/blob/9621add46007f7a1ab37d1fce9bcdcecca62aeb0/extensions/html-language-features/server/src/modes/javascriptMode.ts#L101(特别是在这里): if (textDocument.languageId === 'html') { const modes = languageModes.getAllModesInDocument(textDocument); const settings = await getDocumentSettings(textDocument, () => modes.some(m => !!m.doValidation)); const latestTextDocument = documents.get(textDocument.uri); if (latestTextDocument && latestTextDocument.version === version) { // check no new version has come in after in after the async op for (const mode of modes) { if (mode.doValidation && isValidationEnabled(mode.getId(), settings)) { pushAll(diagnostics, await mode.doValidation(latestTextDocument, settings)); } } return diagnostics; } } 特别是因为这个问题帖子的动机是添加脚本值属性,我发现这里特别有趣的是,如果你查看export function getJavaScriptMode(documentRegions: LanguageModelCache<HTMLDocumentRegions>, languageId: 'javascript' | 'typescript', workspace: Workspace): LanguageMode { const jsDocuments = getLanguageModelCache<TextDocument>(10, 60, document => documentRegions.get(document).getEmbeddedDocument(languageId)); const host = getLanguageServiceHost(languageId === 'javascript' ? ts.ScriptKind.JS : ts.ScriptKind.TS); const globalSettings: Settings = {}; function updateHostSettings(settings: Settings) { const hostSettings = host.getCompilationSettings(); hostSettings.experimentalDecorators = settings?.['js/ts']?.implicitProjectConfig?.experimentalDecorators; hostSettings.strictNullChecks = settings?.['js/ts']?.implicitProjectConfig.strictNullChecks; } return { getId() { return languageId; }, async doValidation(document: TextDocument, settings = workspace.settings): Promise<Diagnostic[]> { updateHostSettings(settings); const jsDocument = jsDocuments.get(document); const languageService = await host.getLanguageService(jsDocument); const syntaxDiagnostics: ts.Diagnostic[] = languageService.getSyntacticDiagnostics(jsDocument.uri); const semanticDiagnostics = languageService.getSemanticDiagnostics(jsDocument.uri); return syntaxDiagnostics.concat(semanticDiagnostics).filter(d => !ignoredErrors.includes(d.code)).map((diag: ts.Diagnostic): Diagnostic => { return { range: convertRange(jsDocument, diag), severity: DiagnosticSeverity.Error, source: languageId, message: ts.flattenDiagnosticMessageText(diag.messageText, '\n') }; }); }, 的定义,它实际上有一个可选的getEmbeddedDocument参数,它是上面的调用中没有使用它。 Anyhoo,如果您想使用脚本值属性并确保进行 JS 检查,只需尝试将 ignoreAttributeValues 元素尽可能早/尽可能高地放在 HTML 文件中,并在其中添加 script 指令注释。前任。 @ts-check 靠近 HTML 文档内部 <script>//@ts-check</script> 元素的顶部。

回答 0 投票 0

使用jsdoc定义递归对象形状的标准方法?

我正在使用jsdoc来记录函数参数。一个函数是递归的,并接受一组可以嵌套到任意深度的对象。这是一个简化的示例: 常量人= {

回答 1 投票 0

如何使用 JSDoc + TypeScript 输入 JavaScript 函数?

更新(2023) 我实际上做了一个关于如何获得 tsc + JSDoc 的演讲来回答这个问题以及其他一些问题: https://jswithtypes.com 并创建了一个包来帮助使用 tsconfig 样板: http...

回答 1 投票 0

在storybook中为纯JS类编写文档

我刚刚开始使用 Storybook 作为我正在开发的 UI 组件库。我想将为 JS 类方法和属性编写的 JSDoc 提取到 Storybook 中并创建一个 Doc。 故事书确实支持...

回答 2 投票 0

如何导出将发布到 npm 的 JavaScript 库的 JSDoc 类型

我在网上搜索了这个问题,甚至查看了 GitHub 上的 TypeScript 问题(5k+ 问题),但似乎找到了解决方法;例子; // 我的模块/tsconfig.json { “编译器选项”:{ ...

回答 1 投票 0

jsdoc 有效参数类型

是否有 jsdoc 参数标签的有效类型列表?例如, @param {type} myParam 一些参数说明 我知道数字和字符串之类的东西是有效的,但是如果我......

回答 3 投票 0

当我在项目中使用带有“命名空间”和“模块”的 JSDoc 时,列出的类和命名空间文档从模块 html 页面中消失了

我正在使用 JSDoc 和 Docstrap 记录一个项目。 当文档组织为(2)个JS文件(或模块)时,生成的文档就可以了。每个模块列出两个(类)。 接下来,我包括...

回答 1 投票 0

JSDoc中有正则表达式的类型吗

我有一个正则表达式存储在这样的变量中: const 正则表达式 = /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{1,}$/ 我现在想使用 JSDoc 提供一个类型。 VSCode 智能感知建议: @ty...

回答 1 投票 0

配置ESLint括号中可选参数

如何配置 ESLint,使其检查必需参数是否写在 JSDoc 中且不带括号,可选参数是否写在括号中? 例子 /** * 函数参数 * *@

回答 1 投票 0

如何使用 JSDoc 导出全局类型?

我发现自己必须在多个文件中重复此过程。 /** @type {import('vue').Ref} */ 函数乐趣(var){ /... } 有没有办法导入一次类型并在不同的地方使用它......

回答 1 投票 0

我怎样才能拥有类似于@deprecated注释的东西?

我有一个 TypeScript Next.js 应用程序,我在编码时使用 VSC。 我喜欢这个功能:如果我在函数上方添加 @deprecated 的 JSDoc 注释,那么该函数的所有用法都具有该函数...

回答 1 投票 0

为什么 VS Code 中 TypeScript 对象属性的建议描述和悬停信息不显示属性类型的文档注释?

最容易在下图中看到该问题,因为该问题与 VSCode 中显示类型信息和注释的弹出框有关。 这是代码,但是 TS Playground 甚至没有显示

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.