2016-10-23 5 views
2

Wie kann ich Modellklassen in Winkel 2 verwenden?eckig 2 Namensraummodell

hier ist ein Beispiel

Modell

namespace model.car { 
    export class CoolCar { 
     Id: string; 
     Name: string; 

     constructor(){ 
     } 
    } 

    export class NiceCar { 
     Id: string; 
     Name: string; 

     constructor(){ 
     } 
    } 
} 

namespace model.bike { 
    export class AwesomeBike { 
     Id: string; 
     Name: string; 

     constructor(){ 
     } 
    } 
} 

Ich mag würde sich in meinen Klassen wie

var car=new model.car.CoolCar(); 

verwenden, aber wenn ich das bekomme ich

einen Fehler in meinem Browser ausführen
"ReferenceError: 'model' is undefined" 

Ich habe versucht, die Modell-Klassen wie

import {CoolCar} from '../model/car/CoolCar' 

zu importieren, aber dann bekomme ich einen Fehler in VS2015:

File "c:/...../model/car/CoolCar.ts is" no module 

Kann mir hier jemand helfen?

Tobias

Antwort

0

Sie benötigen export Schlüsselwort verwenden, wenn Sie Namensraum verfügbar machen möchten. Zum Beispiel:

// MyModels.ts 
export namespace car { 
    export class NiceCar { 
     Id: string; 
     constructor(public name: string) {} 
    } 
} 

export namespace bike { 
    export class AwesomeBike { 
     Id: string; 
     constructor(public name: string) { } 
    } 
} 

Dann verwenden Sie diese Namensräume mit:

// main.ts 
import * as model from './MyModels'; 

let car = new model.car.NiceCar('my nice car'); 
let bike = new model.bike.AwesomeBike('my awesome bike'); 

console.log(car); 
console.log(bike); 

Hinweis bin ich importieren diese Klassen unter model Namespace, der nur angegeben, wenn nicht in MyModels.ts importieren.

Dies, wenn JS und Lauf kompiliert werden Konsole aus:

$ node main.js 
NiceCar { name: 'my nice car' } 
AwesomeBike { name: 'my awesome bike' } 

Beachten Sie, dass es in der Regel mutlos ist Namespaces in Typoskript zu verwenden. Siehe How do I use namespaces with TypeScript external modules?

+0

ja das funktioniert, danke! –

0

Ich denke, das wird Ihnen helfen.

cars.ts

export namespace Cars { 
    export class CoolCar { /* ... */ } 
    export class NiceCar { /* ... */ } 
} 

coolcar.ts

import * as car from "./cars"; 
let c = new cars.Cars.CoolCar(); 

Typescript Reference