Quelle est la meilleure solution pour inclure des bibliothèques JS vanilla dans les projets TypeScript? C'est une de ces choses qui "fonctionne" très bien, mais j'ai le sentiment que je ne m'y prends clairement pas de manière "best-practices".

Supposons, par exemple, que vous souhaitiez utiliser EaselJS dans un projet Angular. Vous pouvez simplement ajouter un lien vers CreateJS dans votre fichier index.html comme d'habitude, puis vous avez accès à l'objet global createjs, mais votre compilateur ne saura bien sûr rien sur createjs et supposera que vous avez une erreur. Quelle est la meilleure façon d'informer TypeScript de cette source externe?

Moreso, quelle est la meilleure façon d'activer l'auto-complétion lorsque je tape "createjs". J'obtiens une liste des méthodes dans ce fichier? Est-il possible de mélanger JS et TS comme ça?

Je suppose que je pourrais créer un shim TypeScript qui transmet les choses à l'objet createjs, mais alors ce shim serait criblé d '"erreurs".

Pensées?

Merci!

2
ragona 5 janv. 2016 à 03:48

2 réponses

Meilleure réponse

Vous devez utiliser la déclaration ambiante.

declare var createjs;

Vous utilisez des déclarations ambiantes pour indiquer au compilateur TypeScript qu'un autre composant fournira une variable.

2
Hamlet Hakobyan 5 janv. 2016 à 00:54

Oh, on dirait que cela se fait via un fichier de définition (.d.ts). Il existe un bon tutoriel ici. En fait, CreateJS a déjà l'un de ces disponible ici, et si vous montez d'un niveau dans ce dépôt Github, vous trouverez des tonnes de ces fichiers de définition dans le le référentiel DefinatelyTyped. Je n'ai pas encore essayé cela, mais cela semble être la bonne direction.

3
ragona 5 janv. 2016 à 00:57