JSDoc是一种用于向JavaScript源代码添加内联API文档的语法。这与解析和操作遵循JSDoc语法的代码的各种工具不同。
我正在制作一个 Google Apps 脚本函数,它接受两个参数:我创建的电子表格对象和交易对象。我如何指定我希望我的参数具有该类型? 我是
JSDoc + Mongoose:如何记录 Mongoose 模型?
我有 Mongoose 架构和模型: var MyClientSchema = 新 mongoose.Schema({ 拳名:{ 类型:字符串 }, 电话号码: { 类型:字符串 } }); var MyClient = mongo...
使用React.fowardRef和useImperativeHandle时如何创建ref的JSDoc?
我没有在我的reactjs项目中使用typescript,但我仍然想用JSDocs来记录我的组件。 问题在于我有一个带有 React.forwardRef 的功能组件,我想...
所以我有一个像这样的基类: 类 BaseAPIClass { /** * 异步工厂 * 执行一些异步操作,然后实例化继承类。 * * @param {String} 我...
如何使用 JSDoc 描述 React 状态? 换句话说,如何将其简化为一句台词? /** 和你在一起的动物 */ 让动物; 让setAnimal; [动物,setAnimal] = useState() ...
使用 redux 和 redux-toolkit 操作函数调用函数时,JSDoc 注释的显示方式不同
经过多年的老派从头开始 Redux 后,我正在尝试 Redux 工具包。使用 createSlice,我定义了我的操作,并带有一些 JSDoc 注释: 导出 const viewBuilderSlice = createSlice({ 不...
我已经开始使用 JSDoc,到目前为止这是一件很棒的事情,但我想记录我的代码部分,例如 Visual Studio 有 #region。 我应该把它放在像这样的评论块中吗? /** *
我们目前正在考虑将具有类型/类型安全性的 JSDoc 添加到我们的项目中。与 Typescript 相比,我们更喜欢带有类型的 JSDoc,因为我们编写的主要是自包含函数,并且不希望 ov...
如何解决“断言要求调用目标中的每个名称都使用显式类型注释进行声明.ts(2775)”?
我有下面的 JavaScript 代码,并且我正在使用 TypeScript 编译器 (TSC) 根据 Typescript 文档 JSDoc 参考提供类型检查。 const 断言 = require('断言'); 常量摩卡=重新...
给出一个简单的自定义商店工厂功能 /** * @template T 在存储中处理的通用数据 * @typedef {import('svelte/store').Readable} 可读 */ /** * @typedef {Object} MyCusto...
对 createAsyncThunk 生成的动作创建者和参数的打字支持
我正在关注 Redux Essentials 教程,了解如何使用 createAsyncThunk 来生成 Thunk。在他们的示例中,他们创建了一个像这样的 thunk: 导出常量 addNewPost =
我用 JavaScript (.js) 编写了以下代码: /** * @typedef {Object} 账户类型 * @property Regular - 用户有用户名和密码 * @property HotspotMAC - 用户的用户名位于...
如何对类型化对象函数参数的字段执行 Typescript JSDoc?
下面是一个 Typescript 函数签名 x,它接受 ABC 作为可选参数。如果传入ABC,则a和b为必填字段。 异步 x(选项:ABC = {}):Promise 接口...
为什么当我添加 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> 元素的顶部。
我正在使用jsdoc来记录函数参数。一个函数是递归的,并接受一组可以嵌套到任意深度的对象。这是一个简化的示例: 常量人= {
如何使用 JSDoc + TypeScript 输入 JavaScript 函数?
更新(2023) 我实际上做了一个关于如何获得 tsc + JSDoc 的演讲来回答这个问题以及其他一些问题: https://jswithtypes.com 并创建了一个包来帮助使用 tsconfig 样板: http...
我刚刚开始使用 Storybook 作为我正在开发的 UI 组件库。我想将为 JS 类方法和属性编写的 JSDoc 提取到 Storybook 中并创建一个 Doc。 故事书确实支持...
如何导出将发布到 npm 的 JavaScript 库的 JSDoc 类型
我在网上搜索了这个问题,甚至查看了 GitHub 上的 TypeScript 问题(5k+ 问题),但似乎找到了解决方法;例子; // 我的模块/tsconfig.json { “编译器选项”:{ ...
是否有 jsdoc 参数标签的有效类型列表?例如, @param {type} myParam 一些参数说明 我知道数字和字符串之类的东西是有效的,但是如果我......
当我在项目中使用带有“命名空间”和“模块”的 JSDoc 时,列出的类和命名空间文档从模块 html 页面中消失了
我正在使用 JSDoc 和 Docstrap 记录一个项目。 当文档组织为(2)个JS文件(或模块)时,生成的文档就可以了。每个模块列出两个(类)。 接下来,我包括...