Ich versuche Angular 1.x mit TypeScript 1.5.3 und SystemJS zu verwenden. Die index.html
Seite ist auf System.import('bootstrapper')
eingestellt, was den Anfang machen sollte.
bootstrapper.ts
wird zu bootstrapper.js
kompiliert und funktioniert gut, solange es nicht angular verwendet wird (d. h. nur console.log()
funktioniert ok)
Nun möchte ich eckig importieren und verwenden, um es zu bootstrappen. Ich habe jspm install angular
schon gemacht und auch einige typings für angular mit tsd
installiert. Die Typisierungen werden oben in der Datei bootstrap.ts
referenziert.
Leider funktioniert import angular from 'angular'
nicht, ich bekomme Module "angular" has no default export
. Meine Fragen sind:
import angular from 'angular'
nicht? Wenn ich in der Datei angular.d.ts
nachschaue, sehe ich declare module 'angular'{ export = angular; }
, was, wenn ich es richtig verstehe, ein Standard-Export aus dem Modulwinkel einer Variablen ist (oben in der Typisierungsdatei definiert) declare var angular: angular.IAngularStatic
import 'angular'
kompiliert, und dann kann ich tatsächlich auf angular
verweisen und z. angular.module(...)
, aber ich glaube nicht, dass ich richtig verstehe, wie das funktioniert. Sollte nicht import 'angular'
einen "bloßen Import" durchführen, d. H. Ein Modul nur wegen seiner Nebenwirkungen laufen lassen? Wenn das der Fall ist, bedeutet das, dass dieser Import tatsächlich angular
im globalen Gültigkeitsbereich registriert? Ich bin mir ziemlich sicher, dass ich nicht richtig verstehe, wie Module / Typdefinitionsdateien in Typescript funktionieren, danke im voraus für eine Erklärung.
Zunächst ist meine bevorzugte Methode, AngularJS 1.5 mit TypeScript und SystemJS zu verwenden:
index.html
app/main.ts
tsconfig.json
config.js
(loader config, vereinfacht)
Hinweise:
"plugin-typescript"
, nicht "typescript"
für den loader und den transpiler an oder führen Sie einfach $ jspm init
aus und wählen Sie einen transpiler. angular
, und die angular.d.ts
-Deklarationsdatei enthält eine CommonJS-Stil export =
-Deklaration, um die Verwendung von Modulen und globalen Namespaces zu ermöglichen. SystemJS interpoliert dies zur maximalen Kompatibilität in einen Standard-Export zur Laufzeit. "module": "system"
und / oder durch Angabe von "allowSyntheticDefaultImports": true
erfolgen. Ich habe beides getan, um der Deutlichkeit und der Deutlichkeit willen. [...] wenn ich das richtig verstehe, ist ein Standard-Export vom Modul Winkel einer Variablen
Nein, das passiert nicht. Angular exportiert den gesamten Namespace als Export, wenn das sinnvoll ist.
import angular from 'angular'
versucht, default
aus dem Modul zu importieren.
Was Sie wollen, ist import * as angular from 'angular';
, das den gesamten Export als Variable importiert.
Tags und Links javascript angularjs typescript ecmascript-6 jspm