typescript - Vad betyder det när import följs av en require?
Raven-dokumentationen för Angular 2 nämner följande ES6-kodexempel:
import Raven = require('raven-js'); // NOTE: "require" not "from"
De nämnde uttryckligen require, men jag är inte säker på vad detta uttalande faktiskt gör och var det är dokumenterat.
Svar #1
import Raven = require('raven-js');
är den ursprungliga Typescript-importsyntaxen.
Den nya ES6-stilen för import föredras nu (sedan TS 1.5)
import * as Raven from 'raven-js'
Dessa två syntaxer importerar ett externt bibliotek/modul för vilket typdefinitioner måste finnas tillgängliga, antingen som separata definitionsfiler som refereras i tsconfig.json eller som en del av biblioteket med en referens till dem i typings-posten i dess package.json (syntaxen ///<reference bör undvikas).
Observera att i en 'require'-miljö, såsom commonjs,
const Raven = require('raven-js');
kommer att göra Raven tillgänglig för resten av koden som any (d.v.s. definitionerna kommer inte att importeras). Detta kan vara användbart när man försöker använda ett JS-bibliotek för vilket man inte har (eller vill skapa) definitionerna.
Svar #2
Importeringen med require kommer från TypeScripts eget modulsystem. Du kan läsa om det i detalj här.
Det nämner också hur man använder olika typer av modulesyntaxer (CommonJS, Native ES6 Modules, etc)
