2017-01-27 1 views
2

Je veux utiliser le module de CommonJS simple tapuscrit, et voici 3 fichiersComment écrire un fichier de définition pour le module de CommonJS qui fonctionnent les exportations

lib d'origine:

//commonjs-export-function.js 
module.exports = function() { 
    return 'func'; 
}; 

fichier de définition:

//commonjs-export-function.d.ts 
declare function func(): string; 
export = func; 

programme dactylographiée qui l'utilisent:

//main.ts 
import { func } from './commonjs-function'; 

console.log(func()); 

Quand je lance tsc je reçois cette erreur:

tsc main.ts && node main.js 
main.ts(1,22): error TS2497: Module '"/Users/aleksandar/projects/typescript-playground/commonjs-function"' resolves to a non-module entity and cannot be imported using this construct. 

ici est également déjà répondu à la question, mais il ne fonctionne pas avec tapuscrit 2,0

How to write a typescript definition file for a node module that exports a function?

Répondre

4

J'ai trouvé la solution dans dactylographiées docs ici: http://www.typescriptlang.org/docs/handbook/declaration-files/templates/module-function-d-ts.html

*~ Note that ES6 modules cannot directly export callable functions. 
*~ This file should be imported using the CommonJS-style: 
*~ import x = require('someLibrary'); 
... 
export = MyFunction; 
declare function MyFunction(): string; 

si fichier de définition mu devrait être:

//commonjs-export-function.d.ts 
declare function func(): string; 
export = func; 

et importer avec redemanderas

//main.ts 
import func = require('./commonjs-export-function');