После проработки предложений, размещенных в других местах, я не могу получить проект typescript, который использует нетипизированный модуль NPM. Ниже приведен минимальный пример и шаги, которые я пробовал.
В этом минимальном примере мы будем притворяться, что lodash
не имеет существующих определений типов. Таким образом, мы проигнорируем пакет @types/lodash
и попробуем вручную добавить его файл типизации lodash.d.ts
в наш проект.
Структура папок
- node_modules
- lodash
- ЦСИ
- foo.ts
- типизации
- заказ
- lodash.d.ts
- глобальный
- index.d.ts
- заказ
- package.json
- tsconfig.json
- typings.json
Далее, файлы.
Файл foo.ts
///<reference path="../typings/custom/lodash.d.ts" />
import * as lodash from 'lodash';
console.log('Weeee');
Файл lodash.d.ts
копируется непосредственно из исходного пакета @types/lodash
.
Файл index.d.ts
/// <reference path="custom/lodash.d.ts" />
/// <reference path="globals/lodash/index.d.ts" />
Файл package.json
{
"name": "ts",
"version": "1.0.0",
"description": "",
"main": "index.js",
"typings": "./typings/index.d.ts",
"dependencies": {
"lodash": "^4.16.4"
},
"author": "",
"license": "ISC"
}
Файл tsconfig.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"
]
}
Файл typings.json
{
"name": "TestName",
"version": false,
"globalDependencies": {
"lodash": "file:typings/custom/lodash.d.ts"
}
}
Как вы можете видеть, я пробовал много разных способов импорта титров:
- Прямым импортом в
foo.ts
- С помощью свойства
typings
вpackage.json
- Используя
typeRoots
вtsconfig.json
с файломtypings/index.d.ts
- Используя явный
types
вtsconfig.json
- Включив каталог
types
вtsconfig.json
- Создав собственный файл
typings.json
и запустивtypings install
Тем не менее, когда я запускаю Typescript:
E:\temp\ts>tsc
error TS2688: Cannot find type definition file for 'lodash'.
Что я делаю неправильно?