unexpected es6 javascript node.js express typescript

javascript - es6 - require vs import



¿Importación mecanografiada/as vs importación/require? (2)

Estos son en su mayoría equivalentes, pero import * tiene algunas restricciones que import ... = require no.

import * as crea un identificador que es un objeto de módulo , con énfasis en el objeto . De acuerdo con la especificación ES6, este objeto nunca es invocable o no es new ; solo tiene propiedades. Si está intentando importar una función o clase, debe usar

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

o (según el cargador de tu módulo)

import express from ''express'';

Intentar usar import * as express y luego invocar express() siempre es ilegal de acuerdo con la especificación ES6. En algunos entornos de ejecución + transpilación, esto podría funcionar de todos modos, pero podría romperse en cualquier momento en el futuro sin previo aviso, lo que lo pondrá triste.

Estoy usando TypeScript con Express / Node.js

Para consumir módulos, el Manual TypeScript muestra la siguiente sintaxis:

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

Pero también el archivo typescript.d.ts muestra:

import * as express from "express";

También busqué en el blog de MSDN pero no pude encontrar nada.

¿Cuál es más correcto a principios de 2016? ¿Cuáles son las diferencias entre los dos, si hay alguno?

¿Dónde está la mejor fuente para encontrar información sobre la sintaxis más reciente para poder encontrar esta información en el futuro?


import * as express from "express";

Esta es la forma sugerida de hacerlo porque es el estándar para JavaScript (ES6 / 2015) desde el año pasado.

En cualquier caso, en su archivo tsconfig.json, debe dirigir la opción del módulo a commonjs, que es el formato admitido por nodejs.