2016-03-09 1 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' я судимый: 'ViewModels/ApplicationViewModel', над уровнем моря 'ApplicationVM'. Я даже объединил его с <reference path />, но это тоже не помогло.

ответ

2

Удалить модуль из декларации ApplicationViewModel.ts (каждый файл уже модуль, если вы используете внешние модули):

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

Тогда в вашем app.ts

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

Спасибо большое, это сработало. Пропустил эту точку на пути и почувствовал себя неловко. –

+0

Добро пожаловать. Обратите внимание, что вам не нужны «модуль» и «экспорт». – 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'); 
Смежные вопросы