2017-02-11 29 views
2

我開始了一個項目,以瞭解外部加載類型如何與Typescript編程配合使用。所以我從一個導入JsSHA的ts文件開始,下面是我用來測試這個庫工作的代碼。即使在添加類型定義文件之後,即使在VS代碼中,Typescript Intellisense也不起作用

import * as jsSHA from "jssha"; 

class sha{ 
    shaObj: any; 
    hash : string; 

    constructor(){ 
     this.shaObj = new jsSHA("SHA-512","TEXT"); 
     this.shaObj.update("This is a test object"); 
     this.hash = this.shaObj.getHash("HEX"); 
    } 
} 

var s:sha = new sha(); 
console.log(s.hash); 

除了通過NPM添加JsSha.js我還添加了基於什麼說here這個庫的類型定義(.d.ts)。儘管如此,我仍然沒有得到任何與JsSha對象或這個庫的構造方法有關的intellisense。我在這裏錯過了一些我應該做的事情,以便讓事情順利進行。

PS:我重新啓動VS代碼,以防萬一以避免任何問題由於緩存。還更新了所有有更新的現有軟件包。

我使用TS在2.1.6,這裏是我的依賴和devdependencies從我的package.json文件:

"dependencies": { 
    "jssha": "^2.2.0", 
    "retyped-jssha-tsd-ambient": "0.0.0-0", 
    "typescript": "^2.1.6", 
    "typings": "^2.1.0" 
}, 
"devDependencies": { 
    "retyped-jssha-tsd-ambient": "0.0.0-0" 
} 
+0

您是否嘗試過 「分型安裝DT〜jssha」? –

+1

你在package.json中安裝了兩次聲明,這肯定是一個潛在的問題。此外,看起來你使用的是打字,如果你已經安裝了包裝,並且可能與npm中安裝的版本衝突。 repo中的package.json文件既沒有「main」入口點屬性也沒有「typings」屬性。缺少這些屬性,再加上版本庫沒有以模塊命名,並且聲明文件沒有命名爲「index」,這可能會阻止它被TypeScript自動發現。 –

+1

我將添加到聲明中文件本身非常古老,並沒有遵循現代實踐(它無條件地污染全球命名空間)。任何不運行'npm install --save @ types/jssha'的理由? –

回答

1

以下設置我的機器上提供智能感知。它從NPM獲取聲明文件,它是the future of declaration files

{ 
    "name": "temp", 
    "version": "0.0.0", 
    "dependencies": { 
    "jssha": "^2.2.0", 
    "typescript": "^2.1.6" 
    }, 
    "devDependencies": { 
    "@types/jssha": "0.0.29" 
    } 
} 

Demonstration of the jsSHA intellisense working.

相關問題