typescript - Hvordan kan du referere til et navnerom deklarert utenfor det nåværende navnerommet med samme navn?
Vurder følgende TypeScript:
export namespace Test {
export const test = "test";
}
export namespace Wrapper {
export namespace Test {
export const value = Test.test; // "<script>".Wrapper.Test has no exported member 'test'.
}
}
På grunn av måten TypeScript kompilerer til JavaScript, vil den andre deklarasjonen av Test innenfor Wrapper opprette et nytt scope der Test kun vil referere til seg selv. Topplags-Test er ikke tilgjengelig innenfor det scope, i det minste ifølge TypeScript typekontrolleren.
Jeg genererer TypeScript fra et annet språk hvor denne typen navneområde-konflikt ikke er noe problem. I TypeScript derimot, resulterer det i en kompilasjonsfeil. Applikasjonen kjører fortsatt, så dette ser ut til å være et TypeScript-typekontrollproblem og ikke et ekte JavaScript-runtime-problem.
Finnes det noen kjente løsninger på dette i TypeScript?
Jeg har satt opp et reproduksjonseksempel i et Gluon-problem.
Svar #1
Du kan opprette et alias for å overvinne navnekollisjonen:
export namespace Test {
export const test = "test";
}
import _Test = Test;
export namespace Wrapper {
export namespace Test {
export const value = _Test.test;
}
}
