Почему эти 2 импорта NodeJS / Typescript дают разные результаты? - PullRequest
0 голосов
/ 15 мая 2019

В проекте NodeJS я установил typescript 3.2, express 4.16 и @types/express 4.16

Я пишу свое приложение в Typescript для последующей транспортировки.Документация для @types/express говорит об импорте и использовании следующим образом:

import * as express from "express";
const app = express();

Однако, когда я делаю это, 2-я строка выдает ошибку, потому что express не является функцией (не имеет подписи вызова).Когда я консоль журнала express, я получаю объект с application свойство

С другой стороны, если я импортирую и использую этот путь:

import express = require('express');
const app = express();

Тогда все работает и консоль-logging express показывает функцию с именем createApplication или что-то подобное.Кажется, что сама функция обладает тем же свойством application, что и в первом методе.

В чем разница?

1 Ответ

1 голос
/ 15 мая 2019

Начиная с TypeScript@2.7 поддерживается следующий синтаксис для импорта модуля по умолчанию:

import b from "bar";

Ваш пример с * импортирует весь экспорт модуля как модульобъект но вы, вероятно, хотите

import express from "express";
const app = express();
...