1

I'm trying to write a TypeScript application and came to a conclusion that I don't like the <reference path /> triple-slash directive. I find it more suitable to use import 'something' instead.

But when I try to replace my reference paths I keep getting an error that module is unknown.

Here's my folder structure:

/app
    /ViewModels
        ApplicationViewModel.ts
    app.ts

ApplicationViewModel.ts

module ApplicationVM {
    export class ApplicationViewModel {
        constructor(public test:string) {
        }
    }
}

app.ts

/// <reference path="ViewModels/ApplicationViewModel.ts" />

var a = new ApplicationVM.ApplicationViewModel('test');

this one works just fine. How do I get following code to work as well?

import * as App from 'noidea';
var a = new App.ApplicationViewModel('test');

For 'noidea' I tried: ViewModels/ApplicationViewModel, ApplicationVM asl. I even combined it with <reference path /> but it didn't help as well.

Vladislav Qulin
  • 1,872
  • 1
  • 17
  • 20

2 Answers2

2

Remove module declaration from ApplicationViewModel.ts (each file is already a module if you use external modules):

export class ApplicationViewModel {
    constructor(public test:string) {
    }
}

Then in your app.ts

import * as App from './ViewModels/ApplicationViewModel';
var a = new App.ApplicationViewModel('test');
Amid
  • 21,508
  • 5
  • 57
  • 54
1

You need to use so called external modules:

ApplicationViewModel.ts

module ApplicationVM {
    export class ApplicationViewModel {
        constructor(public test:string) {
        }
    }
}

export = ApplicationVM;

app.ts

import { ApplicationViewModel } from "./ViewModels/ApplicationViewModel"
var a = new ApplicationViewModel('test');
TSV
  • 7,538
  • 1
  • 29
  • 37