作为打字稿的新手用户(但经验丰富的散景用户),我正在尝试采用BokehJS示例之一并独立运行它 - 这是在Bokeh git存储库的文件层次结构之外。
例如,如果我想运行burtin
示例,我将.ts
、.html
和tsconfig.json
(从examples
目录的顶层)复制到一个新文件夹中。然后,我可以修改.html
文件中的link
和script
标记,以指向相应资源的本地副本。当我尝试运行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'.
如何告诉打字稿编译器在哪里可以找到Bokeh
?burtin
示例中的tsconfig.json
具有以下内容:
{
"extends": "../tsconfig.json",
"files": [
"../../src/coffee/api/typings.d.ts",
"burtin.ts"
]
}
也许typings.d.ts
告诉编译器在哪里查找导出的 BokehJS 名称,但不清楚我是否需要拥有完整的散景源库来编译示例(conda install bokeh
时不包括typings.d.ts
文件)。
有关如何设置此示例并独立运行它的任何见解将不胜感激。
更新:即使tsc
抛出错误,它仍然会产生一个工作burtin.js
并且 html 页面正确显示。我只是不清楚是否有更优化的方法来设置开发环境。
运行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中从头开始重写,几周内应该在这方面有重大改进。特别是,将提供涵盖整个库的新自动生成的打字。理想情况下,将包含一个散景.d.ts文件。