2016-03-09 30 views
1

我試圖寫一些TypeScript應用程序,並得出結論,我不喜歡<reference path />聲明。我覺得更適合使用import 'something'代替。TypeScript用導入代替<reference path />

但是,當我嘗試替換我的參考路徑時,我不斷收到一個錯誤,該模塊是未知的。

這裏是我的文件夾結構:

/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'); 

這個工作得很好。我如何獲得以下代碼以便工作?

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

對'noidea'我tryed:'ViewModels/ApplicationViewModel','ApplicationVM'asl。我甚至將它與<reference path />結合起來,但它沒有幫助。從ApplicationViewModel.ts

回答

2

去除模塊聲明(每個文件已經是如果使用外部模塊一個模塊):

export class ApplicationViewModel { 
    constructor(public test:string) { 
    } 
} 
在app.ts

然後

import * as App from './ViewModels/ApplicationViewModel'; 
var a = new App.ApplicationViewModel('test'); 
+0

非常感謝,它的工作。錯過了路上的那個點,感覺很尷尬。 –

+0

不客氣。請注意,您不需要'module'和'export ='用法。 – Amid

+0

是的,既然你的代碼使它工作,我已經嘗試了一些東西=) –

1

你需要使用這樣稱爲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');