独立的 BokehJS 示例

Standalone BokehJS Example

作为 typescript 的新手(但 Bokeh 的老用户),我试图将 BokehJS examples 和 运行 中的一个独立使用——在文件之外Bokeh git 存储库的层次结构。

例如,如果我想 运行 burtin 示例,我复制 .ts.htmltsconfig.json(从顶部开始-examples 目录的级别)放入新文件夹中。然后,我可以修改 .html 文件中的 linkscript 标记,以指向相应资源的本地副本。当我尝试 运行 tsc burtin.ts 时,出现以下错误:

$ tsc burtin.ts
burtin.ts(2,16): error TS2304: Cannot find name 'Bokeh'.
burtin.ts(2,16): error TS2503: Cannot find namespace 'Bokeh'.
burtin.ts(3,27): error TS2304: Cannot find name 'Bokeh'.
burtin.ts(5,18): error TS2503: Cannot find namespace 'Bokeh'.
burtin.ts(6,16): error TS2503: Cannot find namespace 'Bokeh'.
burtin.ts(8,24): error TS2304: Cannot find name 'Bokeh'.
burtin.ts(9,3): error TS2304: Cannot find name 'Bokeh'.
burtin.ts(10,3): error TS2304: Cannot find name 'Bokeh'.

如何告诉打字稿编译器在哪里可以找到 Bokehburtin 示例中的 tsconfig.json 具有以下内容:

{
  "extends": "../tsconfig.json",
  "files": [
    "../../src/coffee/api/typings.d.ts",
    "burtin.ts"
  ]
}

也许 typings.d.ts 告诉编译器在哪里寻找导出的 BokehJS 名称,但不清楚我是否需​​要完整的 bokeh 源代码库来编译示例(typings.d.ts 文件不是'包含在你 conda install bokeh).

任何关于如何设置此示例和 运行 它独立的见解将不胜感激。

更新: 即使 tsc 抛出错误,它仍然会产生一个有效的 burtin.js 并且 html 页面显示正确。我只是不清楚是否有更优化的方法来设置开发环境。

运行 tsc burtin.ts无视tsconfig.json。您应该改为 运行 tsc -p tsconfig.json(或 tsc -p .)。这样,当找不到输入(d.ts 个文件)时,您会收到错误消息。 Typings 应该是 conda 和 npm 包的一部分,但看起来我们在这里有回归,所以现在你将不得不求助于克隆 bokeh 的存储库或处理 *.d.ts 文件。这些仅在编译时是必需的,在运行时不使用。不管有没有打字,TypeScript 仍然会编译 *.ts 文件并生成有效的 *.js 文件,只要没有语法或其他基本错误并且 noEmitOnError 设置为 false。这是因为TypeScript的类型系统在生成*.js文件之前被完全擦除,没有根据程序的类型生成代码。

鉴于 bokehjs 中的 TypeScript 支持正在积极开发中,并且 bokehjs 正在用 TypeScript 从头开始​​重写,几周内应该会在这方面做出重大改进。特别是,将提供覆盖整个库的新的自动生成类型。理想情况下,将包含一个散景。d.ts 文件。