J'ai défini ceux-ci dans mon fichier .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>
Puis dans test.js:
var myTree = Tree.tree({})
Mais les erreurs Typescript en disant: "Impossible de trouver le nom 'Tree'"
J'ai aussi essayé de compiler avec --module amd
et de placer import Tree = require("model/tree");
en haut du fichier test.js, mais il y a encore des erreurs: Cannot find external module 'model/tree'.
cependant il devrait clairement s'agir d'une importation valide, voir ici où il a été défini: https://github.com/marmelab/tree .js / blob / master / src / main.js
Je ne pas envie d'écrire des fichiers .d.ts pour chaque fichier javascript externe simple que je veux utiliser, est que sérieusement ce que Tapuscrit veut faire?
requirejs
typescript
Blub
la source
la source
Réponses:
Non. La solution la plus simple / la plus rapide est simplement de lui dire qu'il existe une variable
Tree
. C'est aussi simple que:TypeSafety est une échelle mobile dans TypeScript. Dans ce cas, vous dites seulement au compilateur qu'il y a quelque chose appelé
Tree
que vous allez gérer et que vous ne vous souciez pas de beaucoup de sécurité de type au-delà du fait qu'il est là .Plus
IMHO: La ligne
declare var Tree:any;
est une syntaxe beaucoup plus simple que les autres outils de vérification JS vous obligeraient à écrire pour déclarer votre utilisation de variables qui ne sont pas présentes dans votre code.Mettre à jour
la source
Vous pouvez définir vous-même `` exiger '' et utiliser la fonction de dépendance amd non documentée de TypeScript:
La directive 'amd-dependency' dira au compilateur d'inclure votre module pour "définir" les arguments dans le code généré: voir un exemple ici .
Vous pouvez également consulter un très bon article qui explique comment utiliser TypeScript avec RequireJS.
Mais notez que sans écrire les définitions TypeScript appropriées pour votre code existant, vous ne recevrez aucune information de type, et vous n'obtiendrez donc pas de vérifications de sécurité de type, de complétion de code avancée dans les outils, etc. Ainsi, votre 'Tree' sera en fait de type 'any', et sera en fait un élément JS dynamique à l'intérieur d'un autre code TS.
la source