如何使用库未公开但在键入时实现的类型定义?

时间:2016-08-20 22:42:53

标签: javascript typescript electron

我正在使用TypeScript和Electron,我想使用WebContents的类型定义。 WebContents类不直接在API中公开,因此不会编译:

// I'd like to set the return type to WebContents, but TypeScript can't 
// find that type
import { webContents } from 'electron';
export function getWebContents(id: number) : WebContents {
  return webContents.getAllWebContents().filter(wc => wc.id === id).pop();
}

但我可以看到在输入文件中定义的界面:https://github.com/DefinitelyTyped/DefinitelyTyped/blob/00b54a3f25f111afd7a6b70b3b56091c5f434129/github-electron/github-electron.d.ts#L3454

如何在不能直接导入WebContents课程的情况下使用该类型?

版本和typings.json:

"electron-prebuilt": "^1.2.8"
"typescript": "^1.8.10"
"typings": "^1.3.2"
----
"globalDependencies": {
    "node": "registry:dt/node#6.0.0+20160807145350",
    "github-electron": "github:DefinitelyTyped/DefinitelyTyped/github-electron/github-electron.d.ts#00b54a3f25f111afd7a6b70b3b56091c5f434129"
  }

1 个答案:

答案 0 :(得分:1)

正如DT上的大多数声明文件一样,这个是全局声明文件。这意味着您不必导入任何内容,类型声明始终存在于项目的任何位置。例如。这样:

// app.ts
let theWebContents: Electron.WebContents

应该编译得很好。