首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cefsharp webview界面的类型记录定义

cefsharp webview界面的类型记录定义
EN

Stack Overflow用户
提问于 2017-02-16 21:15:44
回答 1查看 1.2K关注 0票数 0

我在RegisterAsyncJsObject CefSharp ChromiumWebBrowser注册了一所学校。这将在web浏览器中创建一个额外的JavaScript对象实例,如下所示:

代码语言:javascript
复制
frame.openWindow(name, data);
frame.navigateToWindow(name, data);

它非常适合普通的JavaScript。我能够访问这个对象,这些方法完成了他们的工作。

现在我想用TypeScript针对这个对象进行编程,但是TypeScript编译器不知道该对象的类型。我试图为该对象创建一个类型定义文件,但它并不真正有效。看来,如果我导入定义/声明,无论如何,它都会覆盖“frame”对象。

您知道如何在TypeScript中使用该对象吗?

我真的需要为那个对象定义一个类型定义吗?它到底是如何工作的呢?

直到现在,我才使用TypeScript,并且已经做了类型定义,但没有自己创建定义。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-16 23:22:54

如果frame还没有现有类型,则可以定义自己的类型:

代码语言:javascript
复制
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有一个现有类型,比如来自lib.d.tsHTMLFrameElement,那么您可以添加一个额外的接口来扩展现有的接口。这被称为declaration merging

代码语言:javascript
复制
interface HTMLFrameElement {
    openWindow(name: any, data: any): void; 
    navigateToWindow(name: any, data: any): void;
}

这可以在常规类型记录文件(.ts)或定义文件(.d.ts)中完成。

您可以在当前文件中包含接口+声明,这应该允许您使用这些方法。如果要将其放置在外部文件中,并且为了让编译器知道该文件,请执行以下操作之一:

  • 将其包含在项目的tsconfig.json
  • 使用import "/myfile"将其导入每个引用文件
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42284778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档