Модули TypeScript @types не могут разрешить друг друга

Когда я использую npm для установки определений TypeScript, подобных этому

npm install --save @types/express

Я не могу использовать установленные модули, так как они не разрешают друг друга. Например, для @types/express требуется @types/express-static-server-core, но поскольку @types/express/index.d.ts содержит относительный путь к express-static-server-core, модуль не может быть разрешен:

node_modules/@types/express/index.d.ts(16,30): error TS2307: Cannot find module 'serve-static'.
node_modules/@types/express/index.d.ts(17,23): error TS2307: Cannot find module 'express-serve-static-core'.
node_modules/@types/serve-static/index.d.ts(15,26): error TS2307: Cannot find module 'express-serve-static-core'.
node_modules/@types/serve-static/index.d.ts(16,20): error TS2307: Cannot find module 'mime'.

Как я могу решить эту проблему? Как лучше всего установить определения TypeScript?

Насколько мне известно, типизация устарела, поэтому я попытался просто установить определения типов из @types, а затем использовать

tsc --target ES5 --module commonjs index.ts

но пока не работает. Что я делаю не так?


person just.me    schedule 26.11.2016    source источник
comment
Вы когда-нибудь догадывались об этом?   -  person lonewarrior556    schedule 18.04.2017
comment
@lonewarrior556 lonewarrior556 В итоге я использовал старый инструмент набора текста, но, если я правильно помню, некоторые из моих новых проектов без проблем используют новые модули @types/*. Будьте осторожны при работе с клиентским и кодом сервера, вам может понадобиться использовать несколько экземпляров машинописного текста.   -  person just.me    schedule 25.04.2017


Ответы (1)


Если это связано, в одном проекте я использовал общие типы с выражением:

import { ParamsDictionary, Request, ... } from 'express-serve-static-core';
// ...
app.get<ParamsDictionary, UserDetails>(...);

Это сработало. Когда я попытался сделать то же самое в другом проекте, в котором не использовались общие типы:

import { Request, Response } from 'express-serve-static-core';

Я получал «Невозможно определить путь к модулю «express-serve-static-core».

Когда я изменил свой импорт на:

import express, { Request, Response } from 'express';

Проблема ушла.

person ChetPrickles    schedule 12.08.2020