Zdefiniowałem to w moim pliku .html:
<script type="text/javascript" src="bower_components/tree.js/tree.min.js"></script>
<script type="text/javascript" src="bower_components/q/q.js"></script>
<script type="text/javascript" src="test.js"></script>
Następnie w test.js:
var myTree = Tree.tree({})
Ale błędy maszynopisu mówią: „Nie można znaleźć nazwy 'Drzewo'”
Próbowałem również skompilować --module amd
i umieścić import Tree = require("model/tree");
na górze pliku test.js, ale znowu się wyświetla błąd: Cannot find external module 'model/tree'.
jednak wyraźnie powinien to być prawidłowy import, zobacz tutaj, gdzie został zdefiniowany: https://github.com/marmelab/tree .js / blob / master / src / main.js
Ja nie chce zapisywać pliki .d.ts dla każdego zewnętrznego pliku javascript chcę użyć, jest to, że poważnie co Typescript chce mi zrobić?
requirejs
typescript
Blub
źródło
źródło
Odpowiedzi:
Nie. Najprostszym / najszybszym rozwiązaniem jest po prostu stwierdzenie, że istnieje jakaś zmienna
Tree
. To jest tak proste, jak:TypeSafety to przesuwana skala w języku TypeScript. W tym przypadku mówisz tylko kompilatorowi, że istnieje coś, co się nazywa
Tree
, że będziesz zarządzać i nie przejmujesz się zbyt dużym bezpieczeństwem typów poza faktem, że istnieje .Więcej
IMHO:
declare var Tree:any;
Składnia tego wiersza jest znacznie prostsza niż w przypadku innych narzędzi JS do weryfikacji błędów, które wymagałyby pisania deklaracji użycia zmiennych, których nie ma w kodzie.Aktualizacja
źródło
Możesz samodzielnie zdefiniować `` wymagania '' i użyć nieudokumentowanej funkcji zależności od amd w TypeScript:
Dyrektywa 'amd-dependency' powie kompilatorowi, aby dołączył Twój moduł do "zdefiniowania" argumentów w generowanym kodzie: zobacz przykład tutaj .
Możesz również zapoznać się z bardzo dobrym artykułem, w którym wyjaśniono, jak używać TypeScript z RequireJS.
Pamiętaj jednak, że bez napisania odpowiednich definicji TypeScript dla istniejącego kodu nie otrzymasz żadnych informacji o typie, a więc nie otrzymasz kontroli bezpieczeństwa typów, zaawansowanego uzupełniania kodu w narzędziach i tak dalej. Tak więc Twoje 'Drzewo' będzie faktycznie typu 'any' i faktycznie będzie dynamicznym fragmentem JS wewnątrz innego kodu TS.
źródło