2017-02-11 3 views
2

Typescriptプログラミングで外部からロードされる型の動作を理解するプロジェクトを開始しました。だから私はJsSHAをインポートするtsファイルから始めました。次に、このライブラリの動作をテストするコードを次に示します。 NPMを介しJsSha.jsを追加することに加えてTypescript型定義ファイルを追加した後でもIntellisenseがVSコードでも機能しない

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); 

Iもhere言われているものに基づいて、このライブラリーの型定義(.d.ts)を加えました。このすべてをやっているにもかかわらず、私はまだJsShaオブジェクトまたはこのライブラリのコンストラクタメソッドに関連するインテリセンスを取得していません。私は物事を働かせるために私がすべきことをここに逃していますか?

PS:VSのコードを再起動しました。キャッシングによる問題を避けるためです。また、更新された既存のパッケージをすべて更新しました。

私はここに、2.1.6でTSを使用していますが、私のpackage.jsonファイルからの私の依存関係やdevdependenciesです:

"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に宣言が2回インストールされている可能性があります。さらに、タイプイングを使ってパッケージをインストールした場合は、npmでインストールされたバージョンと競合する可能性があるので、入力を使用しているように見えます。 repoのpackage.jsonファイルには、メインエントリポイントプロパティとタイピングプロパティがありません。これらのプロパティの欠如は、リポジトリの名前がモジュールの後に指定されておらず、宣言ファイルの名前が '' 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.

関連する問題