【问题标题】:Typescript losing information on module load w/ no .dts file打字稿丢失关于没有.dts文件的模块加载信息
【发布时间】:2017-09-03 02:03:57
【问题描述】:

我在使用 Typescript 而不是 JavaScript 时遇到错误或丢失类型信息的问题。下面使用 VS Code 的“JS”代码实际上为我提供了有关正在导入的 bitcore 变量的信息。但是,在使用 Typescript 时,导入的 bitcore 变量会给出一个错误,指出它缺少定义文件,如果我使用 var 而不是 import 来引入模块,那么我只会得到一个“任何”类型的变量.

鉴于这是 Typescript,我应该能够获得至少与 Javascript 一样多的类型信息。

编辑:我发现了 TS/Code 的一个令人困惑、隐藏的“功能”,如果不存在 tsconfig.json,并且类型以“any”的形式出现,并且该类型信息可以在另一个打开的文件中合法找到VS Code 工作区中的文件,在本例中为 javascript 文件,然后它将“缓存”该类型信息在 VS Code 工作区中并将其显示在 .ts 文件中,即使 TS 本身没有获取该信息。

TS

import bitcore = require("bitcore-lib")
var key = new bitcore.PrivateKey("testnet")
console.log(key)

JS

var bitcore = require("bitcore-lib");
var key = new bitcore.PrivateKey("testnet");
console.log(key);

没有 tsconfig.json 的 TS 存在,并且在打开已检索到类型信息的不同 javascript 文件后,已从“缓存”中检索到类型信息。

【问题讨论】:

  • 您的 TS 导入语句不应该是 import bitcore from "bitcore-lib" 之类的吗?
  • 它仍然给出关于没有声明文件的相同错误

标签: javascript node.js typescript


【解决方案1】:

为了让 TypeScript “了解”您的库,您需要为此库提供定义文件。
在许多情况下,您可以在 DefinitelyTyped 找到库(流行的)的定义文件。
有一个 open issue 来为这个库创建这样的文件,所以你必须等待或贡献给这个存储库。

【讨论】:

  • 看起来很奇怪,如果没有定义文件,那么与 JavaScript 相比,Typescript 实际上会丢失类型信息
  • 与 JavaScript 相比是什么意思?
  • 更新了屏幕截图以显示当存在 tsconfig.json 时,TS 的类型信息实际上比 JS 少。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-27
  • 2017-06-27
  • 2022-11-20
  • 2019-10-25
  • 2016-05-30
  • 2015-11-18
  • 2018-05-10
相关资源
最近更新 更多