TypeScript 2: tipificaciones personalizadas para módulo npm sin tipo
Después de probar sugerencias publicadas enotros lugares, No puedo ejecutar un proyecto mecanografiado que utiliza un módulo NPM sin tipo. A continuación se muestra un ejemplo mínimo y los pasos que probé.
Para este ejemplo mínimo, pretendemos quelodash
no tiene definiciones de tipo existentes. Como tal, ignoraremos el paquete@types/lodash
e intente agregar manualmente su archivo de tipificaciónlodash.d.ts
a nuestro proyecto
Estructura de carpetas
nodo_móduloslodashsrcfoo.tstipingspersonalizadolodash.d.tsglobalindex.d.tspackage.jsontsconfig.jsontypings.jsonA continuación, los archivos.
Expedientefoo.ts
///<reference path="../typings/custom/lodash.d.ts" />
import * as lodash from 'lodash';
console.log('Weeee');
Expedientelodash.d.ts
se copia directamente del original@types/lodash
paquete.
Expedienteindex.d.ts
/// <reference path="custom/lodash.d.ts" />
/// <reference path="globals/lodash/index.d.ts" />
Expedientepackage.json
{
"name": "ts",
"version": "1.0.0",
"description": "",
"main": "index.js",
"typings": "./typings/index.d.ts",
"dependencies": {
"lodash": "^4.16.4"
},
"author": "",
"license": "ISC"
}
Expedientetsconfig.json
{
"compilerOptions": {
"target": "ES6",
"jsx": "react",
"module": "commonjs",
"sourceMap": true,
"noImplicitAny": true,
"experimentalDecorators": true,
"typeRoots" : ["./typings"],
"types": ["lodash"]
},
"include": [
"typings/**/*",
"src/**/*"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
]
}
Expedientetypings.json
{
"name": "TestName",
"version": false,
"globalDependencies": {
"lodash": "file:typings/custom/lodash.d.ts"
}
}
Como puede ver, he probado muchas formas diferentes de importar tipings:
Importándolo directamente enfoo.ts
Por untypings
propiedad enpackage.json
Mediante el usotypeRoots
entsconfig.json
con un archivotypings/index.d.ts
Mediante el uso de un explícitotypes
entsconfig.json
Al incluir eltypes
directorio entsconfig.json
Haciendo una costumbretypings.json
archivo y corriendotypings install
Sin embargo, cuando ejecuto Typecript:
E:\temp\ts>tsc
error TS2688: Cannot find type definition file for 'lodash'.
¿Qué estoy haciendo mal?