web-dev-qa-db-ja.com

angular 2 TypeScriptアプリで型付け.d.tsを見つけてモジュールを宣言できません

TypeScriptとAngular 2.は初めてです。npm依存関係をインストールし、それをangular 2アプリで使用する必要があります。

依存関係は https://www.npmjs.com/package/ng2-stomp-service です

必要なパッケージをインストールしましたが、typings.d.tsファイルに以下を追加する必要があります

declare module 'stompjs';
declare module 'sockjs-client';

プロジェクトでtypings.d.tsファイルが見つかりません。

これまでに次のことを試しましたが、

npm install typings --global
npm install @types/stompjs
npm isntall @types/sockjs-client
typings install dt~stompjs --save
typings install dt~sockjs-client --save

内容が記載されたtypings.jsonファイルがあります。

{
  "dependencies": {
    "sockjs-client": "registry:dt/sockjs-client#1.0.3+20160727010356",
    "stompjs": "registry:dt/stompjs#2.3.0+20161111105645"
  }
}

angular 2 app with npm startを実行すると、次のようにエラーがスローされます

ERROR in D:/Userfiles/subramanians/projects/hand-cricket/node_modules/ng2-stomp-service/dist/stomp.service.ts (27,2): Member 'config' implicitly has an 'any' type.
ERROR in D:/Userfiles/subramanians/projects/hand-cricket/node_modules/ng2-stomp-service/dist/stomp.service.ts (36,2): Member 'queuePromises' implicitly has an 'any[]' type.
ERROR in D:/Userfiles/subramanians/projects/hand-cricket/node_modules/ng2-stomp-service/dist/stomp.service.ts (83,32): Parameter 'str' implicitly has an 'any' type.
ERROR in D:/Userfiles/subramanians/projects/hand-cricket/node_modules/ng2-stomp-service/dist/stomp.service.ts (132,53): Parameter 'response' implicitly has an 'any' type.
ERROR in D:/Userfiles/subramanians/projects/hand-cricket/node_modules/ng2-stomp-service/dist/stomp.service.ts (27,2): Member 'config' implicitly has an 'any' type.
ERROR in D:/Userfiles/subramanians/projects/hand-cricket/node_modules/ng2-stomp-service/dist/stomp.service.ts (36,2): Member 'queuePromises' implicitly has an 'any[]' type.
ERROR in D:/Userfiles/subramanians/projects/hand-cricket/node_modules/ng2-stomp-service/dist/stomp.service.ts (83,32): Parameter 'str' implicitly has an 'any' type.
ERROR in D:/Userfiles/subramanians/projects/hand-cricket/node_modules/ng2-stomp-service/dist/stomp.service.ts (132,53): Parameter 'response' implicitly has an 'any' type.

問題の原因がわからないのですが、typings.d.tsでモジュールを宣言していないためと思われます。

お知らせ下さい。ありがとうございました。

7
LINGS

この会話への私の2セント:

Tsconfig.jsonファイルに、typings.d.tsファイルの正しいパスがあることを確認してください

"typeRoots":["node_modules/@ types"、 "../src/typings.d.ts"]、

13

TypeScriptコンパイラがnode_modulesディレクトリからファイルをコンパイルしようとしているようです。

tsconfig.jsonファイルに次の除外ルールがあることを確認してください:

{ 
  "compilerOptions": {},
  "exclude": [
    "node_modules"
  ]
}

ところで@typestypingsのどちらかが必要です。 2つ目は非推奨です。必要なのは、dev依存関係に含まれる適切な@typesパッケージだけです。それが役に立てば幸い!

編集:npmパッケージにはTypeScriptファイルがあってはいけないと思うので、このリポジトリのgithubに修正を加えたトピックを作成しました: https://github.com/devsullo/ng2-STOMP-Over- WebSocket/issues/5

2
Daniel Kucal

新しいバージョンのangularを使用していない場合、プロジェクトでtypings.d.tsファイルが見つかりません。angularを使用してプロジェクトを更新することをお勧めします= CLI https://cli.angular.io/

2
Devsullo