Как использовать модули npm из typescript?

я даю шанс на typescript. Он отлично работает на мировой сцене hello. Теперь я пытаюсь использовать модуль npm:

index.ts =

import _ = require('lodash')

console.log(_.toUpper('Hello, world !'))

это не работает :

  • tsc index.ts ->Cannot find module 'lodash'. (2307)
  • node-ts index.js ->Cannot find module 'lodash'. (2307)

просмотр документации typescript и в google не помог. Другие вопросы S / O либо остаются без ответа (здесь и здесь) или несвязанный.

элементы :

  • typescript 1.8 последние
  • да, lodash установлен npm i --save lodash и существует в моей файловой системе (проверено)
  • Я тоже typings i --save lodash
  • вариантов import * as _ from 'lodash' или const _ = require('lodash') не работает
  • Я попытался настроить tsconfig.параметры json, предложенные в других ответах "moduleResolution": "node" и "module": "commonjs" как предложено в некоторых ответах, все еще не работает

как мы потребляем пакет npm в typescript ??

2 ответов


существует несколько способов импорта модулей из npm. Но если вы не получаете typings,tsc всегда будет жаловаться, что он не может найти нужный вам модуль (даже если транспилированный js на самом деле работает).

  • если у вас есть typings и не использовать tsconfig.json используйте reference импортировать typings:

    /// <reference path="path/to/typings/typings.d.ts" />
    
    import * as _ from 'lodash`;
    
    console.log(_.toUpper('Hello, world !'))
    
  • если вы используете tsconfig.json файл, убедитесь, что ваш файл typings включен (или нет исключено, ваш выбор), и сделайте import как и в предыдущем примере.

в случае, когда нет typings. У вас есть два варианта: написать свой собственный на .d.ts file или игнорировать проверку типа библиотеки.

чтобы полностью игнорировать проверку типа (это не рекомендуемый способ), импортируйте библиотеку в переменную типа any.

 const _: any = require('lodash');

 console.log(_.toUpper('Hello, world !'))

tsc будет жаловаться на то, что require не существует. Обеспечивать node typings, или declare это, чтобы отбросить ошибку.


вы, вероятно, отсутствует Декларация Файлы.

посмотреть DefinitelyTyped для получения дополнительной информации.


попробуйте это:

npm install --save lodash
npm install --save @types/lodash

теперь вы можете импортировать.

import _ from 'lodash';

если импортируемый модуль имеет множественный экспорт, вы можете сделать это:

import { Express, Router } from 'express';

если модуль, который вы импортируете "не имеет экспорта по умолчанию" вам нужно сделать это:

import * as http from 'http';