2013-11-25 7 views
1

У меня есть ошибка во время компиляции, которую я не понимаю.Конфигурация не может ссылаться на контейнер

declare module M { 
    export interface A { 
     value1: string; 
    } 
} 

declare module M.A { 
    export interface B { 
     value2: string; 
    } 
} 

declare module D { 
    export interface E { 
     test1: M.A[]; // works 
     test2: M.A; // error TS4022 : type reference cannot refer to container 'M.A' 
     test3: {[key: number] : M.A}; // same error 
    } 
} 

Я хочу использовать интерфейсы M.A и M.A.B в своей программе. Является ли это возможным ?

$tsc --version 
Version 0.9.1.1 

ответ

2

Ваше чтение спецификации является правильным; это ошибка в компиляторе 0.9.1.1. Код компилируется без ошибок в бета-версии 0.9.5.0 (see here)

1

У меня raised a bug on Codeplex для этого вопроса.

Пример в спецификации языка терпит неудачу в машинописи детской площадке:

module X { 
    export module Y { 
     export interface Z { 

     } 
    } 
    export interface Y { 

    } 
} 

var z: X.Y.Z; // error! 
+0

Да, это хорошее решение. Но в главе «2.2 пространства имен и именованных типов» ссылка: http://www.typescriptlang.org/Content/TypeScript%20Language%20Specification.pdf (стр. 13 или стр. 20), представляется возможным используйте те же имена. Но пример не работает. – yellowiscool

+0

Да - вы правы ... Отвечайте обновленный. – Fenton

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