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;
}
我正在尝试为使用 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;
}