cefsharp webview 界面的 Typescript 定义
Typescript definition for a cefsharp webview interface
我在 CefSharp ChromiumWebBrowser 中注册了一个 RegisterAsyncJsObject。这会在 Web 浏览器中创建一个额外的 JavaScript 对象实例,如下所示:
frame.openWindow(name, data);
frame.navigateToWindow(name, data);
它与普通 JavaScript 配合得很好。我能够访问这个对象,并且这些方法完成了它们的工作。
现在我想使用 TypeScript 针对此对象进行编程,但 TypeScript 编译器不知道该对象的类型。我试图创建该对象的类型定义文件,但它并没有真正起作用。似乎如果我导入一个定义/声明,无论如何,它都会覆盖 'frame' 对象。
你知道如何在 TypeScript 中使用该对象吗?
我真的需要那个对象的类型定义吗?它是如何工作的?
到目前为止我只是使用 TypeScript 并且已经完成了类型定义,但没有自己创建定义。
如果 frame
还没有现有类型,您可以定义自己的类型:
interface MyFrame {
//fill in the `any` and `void` types as appropriate
openWindow(name: any, data: any): void;
navigateToWindow(name: any, data: any): void;
}
//if frame is initialized somewhere else:
declare let frame: MyFrame;
//if you want to initialize it here:
let frame: MyFrame = //some initialization code
如果 frame
有一个现有的类型,比如说 HTMLFrameElement
来自 lib.d.ts
,那么您可以添加一个额外的接口来扩展现有的。这被称为 declaration merging:
interface HTMLFrameElement {
openWindow(name: any, data: any): void;
navigateToWindow(name: any, data: any): void;
}
这可以在常规 Typescript 文件 (.ts
) 或定义文件 (.d.ts
) 中完成。
您可以在当前文件中包含接口+声明,这样您就可以使用这些方法。如果你想把它放在一个外部文件中,并且为了让编译器知道这个文件,请执行以下操作之一:
- 将其包含在项目的
tsconfig.json
中
- 使用
import "/myfile"
将其导入到每个引用文件中
我在 CefSharp ChromiumWebBrowser 中注册了一个 RegisterAsyncJsObject。这会在 Web 浏览器中创建一个额外的 JavaScript 对象实例,如下所示:
frame.openWindow(name, data);
frame.navigateToWindow(name, data);
它与普通 JavaScript 配合得很好。我能够访问这个对象,并且这些方法完成了它们的工作。
现在我想使用 TypeScript 针对此对象进行编程,但 TypeScript 编译器不知道该对象的类型。我试图创建该对象的类型定义文件,但它并没有真正起作用。似乎如果我导入一个定义/声明,无论如何,它都会覆盖 'frame' 对象。
你知道如何在 TypeScript 中使用该对象吗?
我真的需要那个对象的类型定义吗?它是如何工作的?
到目前为止我只是使用 TypeScript 并且已经完成了类型定义,但没有自己创建定义。
如果 frame
还没有现有类型,您可以定义自己的类型:
interface MyFrame {
//fill in the `any` and `void` types as appropriate
openWindow(name: any, data: any): void;
navigateToWindow(name: any, data: any): void;
}
//if frame is initialized somewhere else:
declare let frame: MyFrame;
//if you want to initialize it here:
let frame: MyFrame = //some initialization code
如果 frame
有一个现有的类型,比如说 HTMLFrameElement
来自 lib.d.ts
,那么您可以添加一个额外的接口来扩展现有的。这被称为 declaration merging:
interface HTMLFrameElement {
openWindow(name: any, data: any): void;
navigateToWindow(name: any, data: any): void;
}
这可以在常规 Typescript 文件 (.ts
) 或定义文件 (.d.ts
) 中完成。
您可以在当前文件中包含接口+声明,这样您就可以使用这些方法。如果你想把它放在一个外部文件中,并且为了让编译器知道这个文件,请执行以下操作之一:
- 将其包含在项目的
tsconfig.json
中
- 使用
import "/myfile"
将其导入到每个引用文件中