2017-04-25 3 views
0

Je voudrais utiliser une petite bibliothèque javascript dans un projet de typographie. (Pour le full example see here).Exportation par défaut de consommer avec Typescript

La bibliothèque javascript définit les éléments suivants:

"use strict"; 

exports.__esModule = true; 
exports["default"] = functionOfInterest; 
function functionOfInterest(val) { } 
module.exports = exports["default"]; 

Cela a été tapé à l'aide d'un fichier .d.ts comme:

export default function functionOfInterest(val: number): void; 

Dans un fichier texte dactylographié J'utilise:

import functionOfInterest from "the-package"; 

functionOfInterest(1); // invoke it. 

Cette est compilé à:

"use strict"; 
Object.defineProperty(exports, "__esModule", { value: true }); 
var functionOfInterest_1 = require("the-package"); 
functionOfInterest_1.default.apply(void 0, 1); 

Cette erreur avec:

TypeError: Cannot read property 'apply' of undefined 

Mon fichier tsconfig.json est:

{ 
    "compilerOptions": { 
    "outDir": "js", 
    "module": "commonjs", 
    "declaration": true, 
    "target": "es5", 
    "lib": ["es6", "dom"], 
    "sourceMap": true, 
    "jsx": "react", 
    "moduleResolution": "node", 
    "rootDir": "ts", 
    "forceConsistentCasingInFileNames": true, 
    "noImplicitReturns": true, 
    "noImplicitThis": true, 
    "noImplicitAny": true, 
    "strictNullChecks": true, 
    "suppressImplicitAnyIndexErrors": true, 
    "noUnusedLocals": true 
    }, 
    "exclude": [ 
    "node_modules", 
    "build" 
    ] 
} 

Je suis sûr qu'il ya juste une erreur de configuration simple quelque part, mais je ne peux pas le comprendre au moment .

2.2.2 Tapuscrit

Répondre

0

Vous devez utiliser:

import functionOfInterest = require("the-package"); 

(functionOfInterest as any)(1); 

** alternative **

Vous pouvez modifier le fichier de définition à:

declare function functionOfInterest(val: number): void; 
export = functionOfInterest; 

Et puis consommer sans la distribution à any:

import functionOfInterest = require("the-package"); 

functionOfInterest(1); 
0

Essayez ceci:

import * as _ thePackage from "the-package"; 

thePackage.functionOfInterest(1); 
+0

Avec Tapuscrit 2.2.2, cette erreur avec: '[ts] Chaîne littérale prévu. [ts] 'attendu'. n'importe quel – AJP