2017-09-15 4 views
0

J'utilise l'excellente bibliothèque Cleave.js dans mon application Typescript. Cleave.js est utilisé comme suit:Définition des types: Créer une instance du module

import * as Cleave from 'cleave.js'; 

new Cleave(element).[whatever] 

Pour l'aide au développement, je développe typages pour Cleave.js, cependant, je ne peux pas trouver un modèle dactylographiée qui me permet de préciser la construction ci-dessus.

Lorsque j'utilise export class Cleave { ...} export default Cleave;

Dans le cas ci-dessus Tapuscrit se plaint:

TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature. 

Quand j'importer Cleave comme import Cleave from 'cleave.js' tapuscrit tente de trouver le champ default sur l'objet importé qui évidemment n'existe pas.

Comment écrire des typings pour des modules nouveaux?

+0

Vous ne pouvez pas importer de classe en utilisant '* as'. Voir https://stackoverflow.com/a/39415662/1704166 –

Répondre

1

Cela ne fonctionne pas. La syntaxe import * as X from 'y' crée un objet d'espace de noms de module. Il est destiné à ne pas être appelable.

Vous devez utiliser la syntaxe: import Cleave = require('cleave.js') à la place.

Pour apprendre à écrire des typings, consultez http://www.typescriptlang.org/docs/handbook/declaration-files/templates.html et les sections connexes dans le manuel.

+0

Et comment dois-je écrire les typings, quelle est ma question ultime? – Sebazzz

+0

Mis à jour avec un lien vers ça :) – unional