2015-07-29 4 views
0

Модели/Объекты/A.tsТиповые модули и импорт - ссылки?

module App.Models.Objects 
{ 
    export class A 
    {} 
} 

Модели/Рефераты/ISomethingElse.ts

module App.Models.Abstracts 
{ 
    export interface ISomethingElse 
    { 
     A: A; 
    } 
} 

Как я использовать модуль App.Models.Objects из файла ISomethingElse.ts?

Я попытался реферирование:

/// <reference path="../Objects/A.ts" /> 

Но до сих пор не может найти A, потому что это в модуле. Как его импортировать?

Я попытался импортировать:

/// <reference path="../Objects/A.ts" /> 
import A = require("App.Models.Objects"); 

Но это еще не компилируется.

Что я делаю неправильно?

+1

Как имена модулей различны, в ISomethingElse вам следует обратиться А его полное имя: «App.Models.Objects.A» Я думаю, что это единственная проблема ... – DaniCE

ответ

0

Предполагая, что вы не используете редактор, который заботится о ссылках для вас, неверный путь ссылки, который вы использовали, неверен. Следующие должны работать:

/// <reference path="../objects/A.ts"/> 
 
    
 
module App.Models.Abstracts 
 
{ 
 
    export interface ISomethingElse 
 
    { 
 
    a: App.Models.Objects.A; 
 
    } 
 
}

+0

Меня больше интересует часть импорта, так что я могу псевдоним этого большого имени модуля. Не можете ли вы импортировать модуль, а не ссылку, как вы положили? как использование в C#, или импорт в java, или использование в php? – Jimmyt1988

+0

Здесь вы используете внутренние модули (которые, я считаю, в конечном итоге правильно названы пространствами имен), вы не можете требовать пространства имен, поскольку это не настоящий JS-модуль (в смысле CommonJS, AMD, ES6 и т. Д.). Если вы хотите использовать импорт require или ES6 с вашим модулем, вам нужно иметь экспорт верхнего уровня в ваш .ts-файл. –

+0

Вы можете использовать псевдоним типа, если все, что вы хотите сделать, это сокращение имени типа. например тип A = App.Models.Objects.A –

Смежные вопросы