当前位置: 首页 > 知识库问答 >
问题:

使用复杂的.d.ts文件(chrome-app.d.ts)

柯立果
2023-03-14

最d、 ts文件很容易使用,jQuery。d、 例如ts。但现在我遇到了chrome应用程序。d、 (对我来说!)如何导入此打字文件。chrome应用程序。d、 ts由一系列模块定义组成,每个模块定义包含接口和导出的函数。这里有一个剪报:

declare module chrome.app.runtime {
    interface LaunchData {
        id?: string;
        ......
        ......
}

declare module chrome.app.window {
    interface ContentBounds {
        left?: number;
        ......
        ......
    export function current(): AppWindow;
    export function get(id: string): AppWindow;
    export function getAll(): AppWindow[];
}

以此类推,共七个模块。未引用模块名称。没有顶级出口申报。

如何在ts中使用(即导入)此定义文件?我想用chrome。应用程序。窗get()等等,继续使用Goog文档中的JS定义。所以用打字脚本回答。d、 没有声明模块的ts文件几乎可以解决我的问题。在该解决方案中,添加到补充。d、 引用模块名的ts文件:

declare module 'chrome.app.runtime' { export = chrome.app.runtime; }

事实上,我可以用这个:

import chromeAppRuntime = require('chrome.app.runtime');

但我不能用这个:

import chrome.app.runtime = require('chrome.app.runtime');

所以这是可以的,并保留工具链:

import fooBar = require('chrome.app.runtime');
var chrome = {app: {runtime: fooBar}};

还有更简单的吗:)

共有1个答案

欧阳智志
2023-03-14

chrome对象是全局命名空间对象,而不是某个外部模块。此chrome-app.d.ts文件描述了存在于Chrome扩展范围内的全局对象。它使用(不鼓励/不建议使用)模块关键字,这与较新版本的TypeScript中较少混淆的命名空间关键字相同。换句话说,此d.ts文件在全局范围内声明命名空间对象。

要使用这个d.ts文件,您不需要导入它,而是将它与您自己的代码一起直接传递给编译器:

tsc my/extension.ts chrome-app.d.ts

然后,您的代码直接使用chrome对象,就像您直接从DOM中运行的脚本的全局范围使用窗口文档一样。(TypeScript编译器在运行时隐式包含捆绑的lib.d.ts,这会暴露DOM API。)

 类似资料:
  • 本页面被移动到[书写声明文件](./declaration files/Introduction.md)页

  • 当使用外部JavaScript库或新的宿主API时,你需要一个声明文件(.d.ts)定义程序库的shape。 这个手册包含了写.d.ts文件的高级概念,并带有一些例子,告诉你怎么去写一个声明文件。 指导与说明 流程 最好从程序库的文档开始写.d.ts文件,而不是代码。 这样保证不会被具体实现所干扰,而且相比于JS代码更易读。 下面的例子会假设你正在参照文档写声明文件。 命名空间 当定义接口(例如:

  • 问题内容: 我正在寻找一种将复杂文本文件解析为pandas DataFrame的简单方法。下面是一个示例文件,我希望解析后的结果是什么样,以及我当前的方法。 有什么方法可以使其更简洁/更快/更pythonic /更易读? 我也把这个问题放在了Code Review上 。 我最终写了一篇博客文章向初学者解释。 这是一个示例文件: 这是我希望解析后的结果看起来像什么: 这是我目前解析的方式: 问题答案

  • 我在解析从Excel中的API检索的XML文件时遇到问题。我可以成功地检索数据集(如下所示),但我找到的将每个字段格式化为其自身单元格的表格式的解决方案没有奏效,我认为这是因为XML的格式化方式。 每个XML看起来都类似于下面的内容。可能需要独立提取多个消息ID。(这是我遇到的另一个问题。“消息ID”中的空格引发了各种错误。) 下面是我尝试使用的解决方案:如何使用vba解析XML 下面是我尝试拉取

  • 我正在学习node.js,使用Visual Studio代码。在我的项目中,我安装了下划线. js,所以我的node_modules文件夹如下所示: 这是我的索引。js文件: 现在,当我按住Ctrl键单击index.js中的< code>contains函数(在Visual Studio代码中表示“转到定义”)时,它不显示< Code > node _ modules/下划线. js中的conta

  • 有没有办法让打字稿编译器在给定的目录中搜索声明文件?类似于C的INCLUDE_PATH。