Ich portiere ein vorhandenes AngularJS (1.x) Projekt nach TypeScript, soweit Code funktioniert, aber ich frage mich, warum das passiert.Typskript kompiliertes Modul deklariert var vor automatischem Aufruf der Funktion
In JavaScript erkläre ich ein Modul wie folgt:
(function() {
'use strict';
angular.module('myModule', []);
})();
In Typoskript etwa so:
module myModule {
'use strict';
angular.module('myModule', []);
}
, die zu dieser zusammengestellt:
var myModule;
(function (myModule) {
"use strict";
angular.module("myModule", []);
})(myModule || (myModule = {}));
Ich habe einige Zweifel :
- Ist es nicht falsch, dem globalen Gültigkeitsbereich
var myModule
hinzuzufügen? - Warum wird
myModule
an die anonyme Funktion übergeben? - Da die
var myModule
hinzugefügt wird, frage ich mich, ob ich das Überschreiben vermeiden sollte. Ich unterscheide Moduldeklaration von, sagen wir, dem Controller. Ich frage mich, wenn ich den Controller deklariere, sollte ich einen anderenmodule
Namen verwenden?
Mit anderen Worten, kann ich wieder verwenden den gleichen Namen für das zweite Modul, wie so
module myModule {
angular
.module('myModule')
.controller('myController');
}
// which will "overwrite" the preexisting var myModule
Oder wäre es besser, einen anderen Namen für das Modul zu verwenden, etwa so:
module myModuleController {
angular
.module('myModule')
.controller('myController');
}
// which will generate another var myModule
Ich habe bereits gesehen, dass der Code genauso gut funktioniert, aber ich bin sicher, dass es bestimmte Dinge gibt, die ich in dieser Angelegenheit wissen sollte.
Danke, viel klarer :-).Eine Frage aber, da ich in AngularJS bin, sollte ich define verwenden? – ghego1
Ich bin kein eckiger Entwickler, also kann ich nicht aus Erfahrung antworten, aber als Ganzes bewegt sich die Javascript-Welt zu Modulladern. Überprüfen Sie diesen Artikel, den ich gefunden habe: [AngularJS 1.x mit Best Practices für TypeScript (oder ES6)] (https://codepen.io/martinmcwhorter/post/angularjs-1-x-with-typescript-o--es6-best-practices). Es empfiehlt, diesen Ansatz zu verwenden –