javascript - Hur skapar man ett nytt objekt för en klass utan att använda dess modulnamn?


Jag har en klass som nedan och jag har detta i en separat fil kallad File1

module test {
    export class myClass{
        constructor(MyName: any) {
        }

    }
}

I en annan fil som kallas File2 skapar jag ett objekt för ovanstående klass enligt nedan.

module test {
    class myClass2{
        var object = new myClass("name");
    }
}

om ovanstående TypeScript-kod för objekt skapande omvandlas till JavaScript-kod ser det ut så här

var object = new test.myClass("name");

Men faktiskt behöver jag att det ska se ut så här i js

var object = new myClass("name");

Kan någon snälla hjälpa mig att göra detta?

Svar #1

Varsågod:

module test {
    export class myClass{
        constructor(MyName: any) {
        }
    }
}

module test {
    var myClass = test.myClass;
    var object = new myClass("name");    
}

Den genererade js:

var myClass = test.myClass;
var object = new myClass("name");

Prova det

Uppdatering: Om du inte vill se någon test. i din js, sätt inte klassen i modulen, alltså:

class myClass{
    constructor(MyName: any) {
    }
}


module test {   
    var object = new myClass("name");    
}

Uppdatering 2: Eftersom du vill använda befintlig Js från TypeScript behöver du använda en ambient deklaration, dvs. declare :

declare class myClass{
    constructor(MyName: any);
}


module test {   
    var object = new myClass("name");    
}