TypeScript 2: digitações personalizadas para o módulo npm sem tipo
Depois de tentar sugestões postadas emoutros lugares, Acho que sou incapaz de executar um projeto de texto datilografado que usa um módulo NPM não digitado. Abaixo está um exemplo mínimo e as etapas que eu tentei.
Neste exemplo mínimo, fingiremos quelodash
não possui definições de tipo existentes. Como tal, vamos ignorar o pacote@types/lodash
e tente adicionar manualmente seu arquivo de digitaçõeslodash.d.ts
ao nosso projeto.
Estrutura de pastas
node_moduleslodashsrcfoo.tstipografiaspersonalizadaslodash.d.tsglobalindex.d.tspackage.jsontsconfig.jsontypings.jsonEm seguida, os arquivos.
Arquivofoo.ts
///<reference path="../typings/custom/lodash.d.ts" />
import * as lodash from 'lodash';
console.log('Weeee');
Arquivolodash.d.ts
é copiado diretamente do original@types/lodash
pacote.
Arquivoindex.d.ts
/// <reference path="custom/lodash.d.ts" />
/// <reference path="globals/lodash/index.d.ts" />
Arquivopackage.json
{
"name": "ts",
"version": "1.0.0",
"description": "",
"main": "index.js",
"typings": "./typings/index.d.ts",
"dependencies": {
"lodash": "^4.16.4"
},
"author": "",
"license": "ISC"
}
Arquivotsconfig.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"
]
}
Arquivotypings.json
{
"name": "TestName",
"version": false,
"globalDependencies": {
"lodash": "file:typings/custom/lodash.d.ts"
}
}
Como você pode ver, tentei várias maneiras diferentes de importar tipagens:
Importando-o diretamente nofoo.ts
Por umtypings
propriedade empackage.json
UsandotypeRoots
notsconfig.json
com um arquivotypings/index.d.ts
Usando um explícitotypes
notsconfig.json
Ao incluir otypes
diretório emtsconfig.json
Fazendo um costumetypings.json
arquivo e em execuçãotypings install
No entanto, quando executo o Typecript:
E:\temp\ts>tsc
error TS2688: Cannot find type definition file for 'lodash'.
O que estou fazendo errado?