2016-03-29 2 views
0

Первоначально я объявил все в окружающем модуле. Позже мне пришлось извлекать перечисления в модуль, не относящийся к окружающей среде, потому что мне нужен просмотр элемента перечисления, с объявлением и const его невозможно. Теперь мои выборочные файлы выглядят следующим образомКак я могу ссылаться на обычный модуль машинописного текста (A.ts) из окружающего модуля (B.d.ts)?

//enums.ts 
export enum Enum1{ 
    Value1, Value2 
} 

//ambient.d.ts 
import * as enums from "./enums"; 
declare interface TypeA 
{ 
    enumField: enums.Enum1; 
    strField: string; 
} 

//consumer.ts 
/// <reference path="ambient.d.ts"/> 
class Consumer{ 
memberField: TypeA; // <= Here compiler cannot find TypeA 
} 

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

ответ

1

Как только вы добавите строку:

import * as enums from "./enums"; 

вы преобразовать его внешний модуль, и, следовательно, доступ к его содержимому нужно импортировать его, как это:

import * as amb from './ambient' 
class Consumer 
{ 
    memberField: amb.TypeA; 
} 

В качестве примечания , Не используйте пространства имен или пытайтесь их смешивать с модулями (link, link).

+0

Может быть, я ошибаюсь, но вы не должны добавить экспорта в интерфейсе?. Я удаляю это сообщение удачи –

+0

Да, вы должны – Amid

1

Вы можете добавить следующее import {TypeA} from "./ambient";

import {TypeA} from "./classes/ambient"; //change your path 

//consumer.ts 
/// <reference path="./classes/ambient.d.ts"/> 

class Consumer{ 
memberField: TypeA; 
} 

//ambient.d.ts 
import * as enums from "./enums"; 

export declare interface TypeA 
{ 
    enumField: enums.Enum1; 
    strField: string; 
} 
Смежные вопросы