Dans mon projet TypeScript, je souhaite utiliser un module Node.js appelé "pure-uuid".TypeScript: la valeur par défaut n'est pas un constructeur
Avec JavaScript plaine, "pure-UUID" peut être utilisé comme suit:
const UUID = require('pure-uuid')
const id = new UUID(4).format();
Je traduis le code dans tapuscrit:
import UUID from 'pure-uuid';
const id:string = new UUID(4).format();
Quand je compile le code, la suivante est produit:
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var pure_uuid_1 = require("pure-uuid");
var id = new pure_uuid_1.default(4).format();
Malheureusement tapuscrit ajoute une .default
à la "pure-UUID" re Conférence, ce qui rend le code échouer sur l'exécution:
TypeError: pure_uuid_1.default is not a constructor
Je pense que la mauvaise compilation est causée par une erreur dans le fichier de définition de tapuscrit (qui a été écrit manuellement):
interface UUID {
/* making */
make(version: number, ...params: any[]): UUID;
/* parsing */
parse(str: string): UUID;
/* formatting */
format(type?: string): string;
/* formatting (alias) */
tostring(type?: string): string;
/* importing */
import(arr: number[]): UUID;
/* exporting */
export(): number[];
/* byte-wise comparison */
compare(other: UUID): boolean;
}
export interface UUIDConstructor {
/* default construction */
new(): UUID;
/* parsing construction */
new(uuid: string): UUID;
/* making construction */
new(version: number): UUID;
new(version: number, ns: string, data: string): UUID;
}
declare var UUID: UUIDConstructor;
export default UUID;
Quelle est la bonne manière d'exporter le module "pur-uuid"?
Vous ne pouvez pas déclarer une déclaration du constructeur dans une interface. – Donal
Essayez: 'export = UUID;' – Paleo
@Paleo, en utilisant 'export = UUID;' montre 'erreur TS2693: 'UUID' fait seulement référence à un type, mais est utilisé comme valeur ici. 'Lors de l'écriture d'un nouvel UUID (4) .format() '. –