2015-11-19 18 views
11

Mam problem z importowaniem deklaracji z pliku rozszerzonego (korzystam z pisania this). Według example, należy umieścić ten do mojego kodu:Problem TypeScript z importowaniem deklaracji

import * as SockJS from 'sockjs-client'; 
import BaseEvent = __SockJSClient.BaseEvent; 
import SockJSClass = __SockJSClient.SockJSClass; 

Jednak gdy próbuję to zrobić w następujący sposób:

module Test { 
    import * as SockJS from 'sockjs-client'; 
    import BaseEvent = __SockJSClient.BaseEvent; 
    import SockJSClass = __SockJSClient.SockJSClass; 

    export class Example { 
     constructor() {...... 
}}} 

otrzymuję następujący błąd z kompilatora:

error TS1147: Import declarations in a namespace cannot reference a module. 

Czy robię coś nie tak? Czy jest jakiś problem z samym pisaniem?

Dzięki
uksz

+1

pan odwołać plik 'd.ts' jako' /// <ścieżce referencyjnej = "./sockjs-client.d.ts" /> "lub we wspólnym' tsd.dts "i zachowaj import z modułu – Sami

+0

@Sami tak, zrobiłem ... – uksz

Odpowiedz

2

Wierzę, że to ze względu na mieszankę opcji modułowych maszynopis.

Twoja klasa używa modułów wewnętrznych, a plik do pisania używa modułów zewnętrznych. Zobacz Praca z innych bibliotek JavaScript sekcja tutaj: http://www.typescriptlang.org/docs/handbook/modules.html

+2

Czy masz jakieś pomysły, jak napraw to? – uksz

10

Należy używać instrukcje importu poza modułem

import * as SockJS from 'sockjs-client'; 
import BaseEvent = __SockJSClient.BaseEvent; 
import SockJSClass = __SockJSClient.SockJSClass; 

module Test { 
    export class Example { 
     constructor(){} 
    } 
} 
+7

Gdy tylko wyjmę go poza moją przestrzeń nazw, wszystko inne zaczyna się łamać. Przypuszczam, że powoduje to rejestrację mojego kodu jako modułu zewnętrznego, a następnie nie może już wyświetlać innych bibliotek innych firm. Czy jest coś, co mogę zrobić, żeby to naprawić? Dzięki –

+0

@AdamPlocher Mam ten sam problem. Czy znalazłeś jakieś rozwiązanie? – romanoza

+0

@romanoza Przestałem używać 'module' lub' namespace'. Próbowałem sobie przypomnieć dlaczego, ale natknąłem się na odpowiedź, którą napisałem na inne pytanie (zaledwie 2 dni po tym komentarzu, o którym najwyraźniej zapomniałem). Wydaje się, że dokładnie dotyczy tego tematu: https://stackoverflow.com/a/43023392/730566 –

Powiązane problemy