VSCode 在 window 范围内指定类型定义

VSCode specify type definitions on window scope

我正在尝试为使用 webpack 构建的库提供打字稿类型定义,该库在全局 window 范围内注册。 该库是为通过 CDN 直接集成到浏览器而构建的。

我读到,定义 Window 接口并向其添加库应该可以解决问题,IDE 应该将我的定义与其全局 Window 定义合并。 如果我将 *.d.ts 文件集成为 WebStrom 中的库,这会起作用,但它不适用于 VSCode.

这是一个简单的例子:my-lib.d.ts

export interface Window {
    mylib: MyLib
}
export class MyLib {
    foo(): string;
    bar: number;
}

以及我想要访问它的方式:consuming-script.js

/// <reference path="my-lib.d.ts"/>
const result = window.mylib.foo();

虽然导入参考有效,(我可以访问 MyLib class)IntelliSense 不会在 [=21= 上显示额外的 属性 mylib ] 对象。

my-lib.d.ts 中使用全局声明是可行的,但是这使得 mylib 在全局范围内可用,而不是 window 对象,这是别无选择的。

我做错了什么?我必须在 visual studio 代码设置中更改某些内容吗? - 我无法相信它在 WebStorm 中如此简单,而在 VSCode 中却如此麻烦,实际上是 Microsoft IDE 导入 Microsoft TS 类型定义。

Titian Cernicova-Dragomir 是对的,重要的部分是在全局范围内定义接口。

改成这个之后就起作用了:

declare global {
    interface Window {
        mylib: MyLib
    }
}
export class MyLib {
    foo(): string;
    bar: number;
}