Próbując połączyć przyjazny dla AMD szkielet aplikacji, natknąłem się na przeszkodę: nie mogę zejść z mojej obecnej ścieżki zaimportować moduł do innego katalogu. mogę importować moduły, które są powyżej, ale poniżej zgłasza błąd:Import modułu TypeScript znajdujący się w ścieżce niższej od aktualnej ścieżki powoduje błąd zakresu
TypeScript Error: The name ''../core/View'' does not exist in the current scope
Tutaj jest struktura mojego (bardzo podstawowy) APP:
app/
- core/
- View.ts
- views/
- HomeView.ts
- Application.ts
W moim pliku Application.ts
, mogę zaimportować moduł tak:
import HomeView = module('views/HomeView');
export class Application {
constructor() {
console.log('initializing Application');
}
}
, który po użyciu --module AMD flagę, poprawnie wyświetla
define(["require", "exports", 'views/HomeView'], function(require, exports, __HomeView__) {
var HomeView = __HomeView__;
var Application = (function() {
function Application() {
console.log('initializing Application', HomeView);
}
return Application;
})();
exports.Application = Application;
})
Teraz problem jest kiedy wskoczyć views/HomeView.js
i próbować importować moje core/View
klasy bazowej przedłużyć od:
import View = module('../core/View');
export class HomeView {
constructor() {
console.log('Hello HomeView!');
}
}
Która zgłasza to kompletny błąd:
TypeScript Error: The name ''../core/View'' does not exist in the current scope
File: test/src/app/views/HomeView.ts
Start: 21, Length: 14
Line: import View = module('../core/View');
---------------------------^^^^^^^^^^^^^^--
Czy to błąd w kompilatorze, czy moje rozumienie importu modułów jest błędne? Dlaczego mógłbym importować views/HomeView
, ale nie ../core/View
?
Każda pomoc zostanie bardzo doceniona.
Użyłem prawie tego samego rozwiązania. Ścieżki są zawsze względem klasy głównej (to znaczy klasy, która ładowała pierwszy moduł), więc View.ts zawsze można uzyskać przez 'moduł (" core/View ")' – JcFx
+1 dla tych informacji - dziękuję! – Fenton
Wow --- czasami tęsknisz za najbardziej oczywistymi rzeczami :) – cnp