如何让打字稿编译器找到散景的“*d.ts”文件

How to get the typescript compiler to find bokeh's "*d.ts" files

我最近从 Bokeh 的内联扩展框架转移到 their npm based out of line build system,我正在尝试构建我的扩展,但 Bokeh 将所有 TypeScript *.ts.d 安装在一个单独的树中,例如:

bash$ find node_modules -name 'serialization.*'
node_modules/@bokeh/bokehjs/build/js/types/core/util/serialization.d.ts
node_modules/@bokeh/bokehjs/build/js/lib/core/util/serialization.js
bash$ 

内联构建系统中,此文件的导入方式类似于import { is_NDArray_ref, decode_NDArray } from "core/util/serialization"

有没有办法使用 tsconfig.json 选项让我的扩展文件继续使用 core/util/serialization 导入 找到 JavaScript 和带有 Bokeh 节点安装布局的 TypeScript 描述。

我的 package.json 中唯一的依赖项是:

  "dependencies": {
    "@bokeh/bokehjs": "^2.3.1"
  },

即使我将导入路径更改为使用 .../lib/...,TypeScript 也找不到 *.d.ts 文件,如果我将导入路径更改为使用 .../types/...(如果找到类型)并编译但链接器无法找到 JavaScript。我使用 Bokeh 的 bokeh init 创建我的构建沙箱...感谢您的任何建议...

我在 Bokeh ticket 中找到了答案。简而言之,添加:

"paths": {
  "@bokehjs/*": [
    "./node_modules/@bokeh/bokehjs/build/js/lib/*",
    "./node_modules/@bokeh/bokehjs/build/js/types/*"
  ]
}

compilerOptions 中的 tsconfig.json 文件 属性 允许像这样导入:

import { is_NDArray_ref, decode_NDArray } from "@bokehjs/core/util/serialization"

这似乎很有道理。