javascript - online - typescript loader webpack 4
¿Cómo incluir módulos de nodo sin tipo con Typescript 1.8? (1)
Typescript 1.8 ahora admite archivos JS sin tipo. Para habilitar esta característica, simplemente agregue el indicador del compilador --permiteJJ o agregue "allowJs": verdadero a compilerOptions en tsconfig.json
a través de https://blogs.msdn.microsoft.com/typescript/2016/01/28/announcing-typescript-1-8-beta/
Estoy intentando importar el complemento react-tap-event-plugin que no tiene un archivo typings.
import * as injectTapEventPlugin from ''injectTapEventPlugin'';
dice módulo no encontrado. Así que lo intenté:
import * as injectTapEventPlugin from ''../node_modules/react-tap-event-plugin/src/injectTapEventPlugin.js'';
Esto dice que el Módulo se resuelve en una entidad que no es un módulo y no se puede importar utilizando esta construcción. Y luego intenté:
import injectTapEventPlugin = require(''../node_modules/react-tap-event-plugin/src/injectTapEventPlugin.js'');
Se está bloqueando con ERROR in ./scripts/index.tsx Module build failed: TypeError: Cannot read property ''kind'' of undefined
en node_modules/typescript/lib/typescript.js:39567
Mi tsconfig:
{
"compilerOptions": {
"target": "ES5",
"removeComments": true,
"jsx": "react",
"module": "commonjs",
"sourceMap": true,
"allowJs": true
},
"exclude": [
"node_modules"
]
}
Estoy usando un paquete web con ts-loader:
{
test: //.tsx?$/,
exclude: [''node_modules'', ''tests''],
loader: ''ts-loader''
}
La nueva característica --allowJs no significa que se generarán tipings para ti, por lo que no puedes hacer
import {SomeModule} from ''something'';
donde ''algo'' es un archivo JS simple: debe importarlo usando la sintaxis JS simple, por ej.
var someModule = require(''something'');
Si no tiene un archivo .d.ts para la importación, no podrá usar ningún tipo de anotación, por ejemplo
let x: someModule
será inválido Si desea escribir anotaciones, intellisense y cualquier otra característica de TypeScript para la importación, deberá crear un archivo .d.ts o crear sus propias interfaces para los bits que necesita.
Al leer la documentación, parece que esta característica es principalmente para las personas que realizan conversiones de .js a .ts para poder reescribir incrementalmente sus archivos .js. Además, se usa para agrupar sus externos con su propio código, y le ahorra tener que agrupar / concatenar archivos usando una herramienta como paquete web o browserify.