Importazione typescript / come contro importazione / richiesta?

Sto usando TypeScript con Express / Node.js

Per i moduli che consumano, il manuale di TypeScript mostra la seguente syntax:

import express = require('express');

Ma anche il file typescript.d.ts mostra:

import * as express from "express";

Ho anche cercato il blog MSDN ma non ho trovato nulla.

Quale è più corretto all’inizio del 2016? Quali sono le differenze tra i due, se del caso?

Qual è la fonte migliore per trovare informazioni sull’ultima syntax da utilizzare in modo da poter trovare queste informazioni in futuro?

Questi sono per lo più equivalenti, ma l’ import * ha alcune restrizioni che import ... = require no.

import * as crea un identificatore che è un object modulo , enfasi sull’object . Secondo le specifiche ES6, questo object non è mai richiamabile o new , ha solo proprietà. Se stai cercando di importare una funzione o una class, dovresti usare

 import express = require('express'); 

o (a seconda del caricatore del modulo)

 import express from 'express'; 

Il tentativo di usare import * as express e quindi invocare express() è sempre illegale secondo le specifiche ES6. In alcuni ambienti di runtime + transpilation, questo potrebbe funzionare comunque, ma potrebbe rompersi in qualsiasi momento nel futuro senza preavviso, il che ti renderà triste.

 import * as express from "express"; 

Questo è il modo consigliato di farlo perché è lo standard per JavaScript (ES6 / 2015) dall’anno scorso.

In ogni caso, nel tuo file tsconfig.json, dovresti scegliere come target l’opzione module su commonjs che è il formato supportato da nodejs.