はじめに
Angular5 + Typescript2でコードを書いてたら、表題のエラーに遭遇した。遭遇するの2度目なので解決方法をメモる。
開発環境
Angular@5.2.0
TypeScript@2.5.3
Node@8.1.4
エラー発生時のコード
下記コードのinterval: NodeJS.Timer;
の部分でTS2503: Cannot find namespace'NodeJS'.
エラーが発生した
export class AppComponent { interval: NodeJS.Timer; // <- ここで表題のエラーが発生 sampleOne() { clearInterval(this.interval); // インターバルをリセット this.interval = setInterval(() => this.sampleTwo(), 250); // 250ミリ秒間隔でメソッドを呼び出す } }
対応手順
# typingsをインストールしていない場合 $ npm install -g typings $ typings install dt~node --global --save-dev
プロジェクトディレクトリ上でターミナルを開き、
typings install dt~node --global --save-dev
コマンドを実施(※) ※typingsがインストールされていない場合は、npm install -g typings
で事前にインストールが必要上記コマンドの結果、typingsディレクトリが作成される
tsconfig.jsonに
"include": ["typings/index.d.ts"]
を追加
{ "compileOnSave": false, // ここから "include": [ "typings/index.d.ts" ], // ここまでを追加 "compilerOptions": { "outDir": "./dist/out-tsc", "sourceMap": true, "declaration": false, "moduleResolution": "node", "emitDecoratorMetadata": true, "experimentalDecorators": true, "target": "es5", "typeRoots": [ "node_modules/@types" ], "lib": [ "es2017", "dom" ] } }