0

作为 typescript 的新手用户(但 Bokeh 的经验丰富的用户),我正在尝试采用BokehJS 示例之一并独立运行它——这在 Bokeh git repo 的文件层次结构之外。

因此,例如,如果我想运行该burtin示例,我将.ts,.htmltsconfig.json(从目录的顶层examples)复制到一个新文件夹中。然后我可以修改文件中的linkandscript标记.html以指向相应资源的本地副本。当我尝试运行时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'.

我如何告诉打字稿编译器在哪里找到Bokehtsconfig.json示例中有以下burtin内容:

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

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

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

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

4

1 回答 1

1

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

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

于 2018-01-20T19:38:24.833 回答