JSDoc globalThis & Window 对象扩展

问题描述 投票:0回答:1

我正在与 JSDoc 作斗争,试图使其与窗口对象上的新属性一起使用。

我已经在 Window 和 globalThis 解决方案上尝试了您在代码片段中看到的两个 @typedef,但没有任何运气:(

我在JS

中有以下代码
/**
 * @typedef {Object} Routes
 * @property {string} root - Root URL
 * @property {string} product - Product URL
 */

/**
 * @typedef {Object} ThemeObject
 * @property {Routes} routes - All Shopify routes
 */

/**
 * The global `theme` object.
 * @typedef {Window & { theme: ThemeObject }}
 */

/**
 * The global `Window` object.
 * @typedef {globalThis & { theme: ThemeObject }} Window
 */

window.emitter = new Emitter();
window.theme.routes.root;

但是在 VS Code 中不断出现错误:

Property 'theme' does not exist on type 'Window & typeof globalThis'
javascript visual-studio-code window jsdoc
1个回答
0
投票

我是这样解决的。我在项目的根目录中创建了一个名为

globals.d.ts
的文件。

export interface GlobalData {
    myString: string;
}

declare global {
    interface Window {
        globalData: GlobalData;
    }
}

export
很重要,因为它使文件成为一个模块。然后在根目录
app.js
我像这样导入:

/**
 * @typedef {import('./globals')}
 */

并且

window
因此得到增强。

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