2015-09-08 17 views
6

Buduję aplikację Aurelia w TypeScript, która wykorzystuje SystemJS/jspm i TypeScript definition manager. Mam pliki źródłowe .ts pod plikami /app/** i .d.ts pod /typings/** i /jspm_packages/** (Ponieważ niektóre pliki definicji są wysyłane za pośrednictwem jspm).Odwoływanie się do definicji typu TypeScript

Oczywiście kompilator TypeScript nie rozumie SystemJS/jspm lub TSD, więc muszę w jakiś sposób odwołać się do definicji typów zarządzanych przez nich. Próbowałem przekazać wszystkie pliki .ts do kompilatora, więc odwołuje się zarówno do źródła, jak i definicji, ale prowadzi to do króliczej dziury konieczności pobierania wszystkich definicji typów zaimportowanych przez wszystkie definicje typów. Kończy się definicją typu inception (Yo dawg słyszałem, że lubisz definicje typów). Wydaje się, że kompilator powinien dbać tylko o rzeczy wyeksportowane według definicji typów bezpośrednio przywoływanych przez źródło (i nie rzeczy zaimportowane przez te definicje).

W każdym razie mam wrażenie, że podchodzę do tego w niewłaściwy sposób i zastanawiam się, czy istnieje lepszy/właściwy sposób odwoływania się do plików definicji.

PS: Wygląda na to, że mogą istnieć pewne rozwiązania, które wymagają edytorów/wtyczek, ale szukam podejścia ściśle CLI, ponieważ jest to część automatycznej kompilacji.

+0

Czy próbowałeś przenieść swój folder typowania do folderu aplikacji? W ten sposób plik tsconfig.json, który tam mieszka, automatycznie odbierze twoje deklaracje (a nie inne pakiety z jspm). – Brocco

+0

Podnosi deklaracje, ale problem jest następujący: referencje (import) we wszystkich typach definicje. Na przykład, powiedzmy, że odwołuję się do biblioteki lib A, która odwołuje się do biblioteki lib B. Powinienem tylko dołączyć definicję typu dla biblioteki lib A. Ale w obecnej formie muszę dołączyć definicje typów zarówno dla biblioteki lib A, jak i B. – hcoverlambda

+0

tsd powinienem sobie z tym poradzić ... tzn. jeśli zainstaluję definicje dla kątowego poprzez tsd, automatycznie wniosę do mnie jquery. – Brocco

Odpowiedz

1

Nienawidzę odwoływać się do plików. Po prostu używam opcji "wykluczenia" w tsconfig.json. Gwarantuje to, że wszystkie pliki typografii zostaną włączone do mojego całego projektu i nigdy nie będę musiał używać żadnego <reference>.

Wystarczy użyć the following tsconfig i powinno być dobrze iść:

{ 
    "compilerOptions": { 
    "target": "es5", // or es6 
    "module": "system", 
    "sourceMap": true, 
    "declaration": true 
    }, 
    "exclude": [ 
    "node_modules" 
    ] 
} 

Here's mój główny plik w tym module. Zauważ, że nie ma żadnych odniesień do żadnego pliku deklaracji.

Powiązane problemy