Svelte / SvelteKit 和 Typescript:向 window 对象添加属性,或扩展接口
Svelte / SvelteKit and Typescript: add properties to the window object, or extend the interface
我有以下工作 (运行) 代码,但收到 TypeScript 错误 属性 'onSubmit' 在类型 'Window & typeof globalThis' 上不存在。 .
function onSubmit() {
. . .
}
onMount(() => {
window.onSubmit = onSubmit; <-- Error
});
onDestroy(() => {
window.onSubmit = null; <-- Error
});
在我的 global.d.ts 文件中,我尝试导出接口以导入
export interface CustomWindow extends Window {
onSubmit: () => void;
}
并声明一个全局
declare global {
interface Window {
onSubmit: () => void;
}
}
两种解决方案均未成功,错误仍然存在。我们如何向 window 对象添加属性以便 TypeScript 识别?
几乎正确,declare
是正确的关键字,但您不需要用 global
包装它。
下面补充一下:
declare interface Window {
onSubmit: () => void;
}
还要确保您的 global.d.ts
中没有任何 import
或 export
,因为这样它就不再被视为环境模块。
我有以下工作 (运行) 代码,但收到 TypeScript 错误 属性 'onSubmit' 在类型 'Window & typeof globalThis' 上不存在。 .
function onSubmit() {
. . .
}
onMount(() => {
window.onSubmit = onSubmit; <-- Error
});
onDestroy(() => {
window.onSubmit = null; <-- Error
});
在我的 global.d.ts 文件中,我尝试导出接口以导入
export interface CustomWindow extends Window {
onSubmit: () => void;
}
并声明一个全局
declare global {
interface Window {
onSubmit: () => void;
}
}
两种解决方案均未成功,错误仍然存在。我们如何向 window 对象添加属性以便 TypeScript 识别?
几乎正确,declare
是正确的关键字,但您不需要用 global
包装它。
下面补充一下:
declare interface Window {
onSubmit: () => void;
}
还要确保您的 global.d.ts
中没有任何 import
或 export
,因为这样它就不再被视为环境模块。