2017-08-30 105 views
1

我遇到了使用Typescript而不是JavaScript時出現錯誤或丟失類型信息的問題。使用VS Code的下面的「JS」代碼實際上給我提供了有關被導入的bitcore變量的信息。但是在使用Typescript時,導入的bitcore變量給出了一個錯誤,指出它缺少定義文件,如果我使用var而不是import來引入模塊,那麼我只是得到一個「任意」類型的變量。Typescript在模塊加載時丟失信息w/no .dts文件

鑑於這是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) 

enter image description here

JS

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

enter image description here

TS瓦特/沒有tsconfig.json本,並輸入信息已經從 「緩存」 檢索開口後一個已經檢索到t的不同的JavaScript文件類型信息。

enter image description here

+0

你的TS導入語句不應該像''bitcore-lib''導入位核? – Harald

+0

它仍然給出了關於沒有聲明文件 – Sharpiro

回答

0

爲了打字稿「知道」你的圖書館,你需要提供一個定義文件這個庫。
在許多情況下,您可以在DefinitelyTyped處找到庫(流行的)的定義文件。
有一個open issue爲這個庫創建這樣的文件,所以你將不得不等待或貢獻這個庫。

+0

的同樣的錯誤似乎奇怪,如果沒有定義文件存在,那麼Typescript實際上將LOSE類型信息與JavaScript相比 – Sharpiro

+0

與JavaScript相比,你是什麼意思? – Sagi

+0

已更新w /截圖,以顯示tsconfig.json何時出現,TS實際上具有比JS更少的類型信息。 – Sharpiro