Tengo una aplicación Angular2 que está construida con WebPack. Actualicé WebPack de v1.8 a v2 y todo parece funcionar bien. El único problema es que el código anterior tiene lo siguiente:
import Timer = NodeJS.Timer; .... apptInterval: Timer; .... this.apptInterval = setInterval(() => { ... }, 1000); Después de la actualización, aparece un error: TS2503: Cannot find namespace 'NodeJS'.
tsconfig.json se ve así:
{ "compilerOptions": { "target": "es5", "module": "commonjs", "moduleResolution": "node", "sourceMap": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, "lib": ["es2015", "dom"], "noImplicitAny": true, "suppressImplicitAnyIndexErrors": true } } Los documentos para Angular/Webpack ya no tienen typings.json ; sin embargo, incluso si copio del directorio Webpack 1, no ayuda. El contenido es typings.json es
{ "globalDependencies": { "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", "node": "registry:dt/node" } }Es interesante que si elimino las referencias a NodeJS, todo funciona bien. Como esto:
apptInterval: any; .... this.apptInterval = setInterval(() => { ... }, 1000); Si miro debajo del depurador F12, el tipo de apptInterval es ZoneTask . Estoy seguro de que hay una manera de hacerlo fuerte, pero se me escapa. La única sugerencia que encontré fue ejecutar typings install dt~node --global --save-dev (que esencialmente actualiza typings.json, pero no ayuda.
Si también tiene tsconfig.app.json en su directorio de trabajo, intente agregar el nodo de atributo al campo de tipos . Me gusta:
{ "extends": "../tsconfig.json", "compilerOptions": { "outDir": "../out-tsc/app", "module": "es6", "baseUrl": "", "types": ["node"] --> ADD THIS }, "exclude": [ "test.ts", "**/*.spec.ts" ] }Para TypeScript@2.0+, use @types :
npm install -D @types/node @types/jasmine Si aún desea aferrarse a typings , incluya typings/index.d.ts en su tsconfig.json:
{ "include": [ // or "files" "typings/index.d.ts" ] }Agregar nodo a los tipos no funcionó para mí, "types": ["node"] pero agregar a las raíces de tipos sí
{ "compilerOptions": { ... "typeRoots": [ "node_modules/@types" ] } }