2017-01-27 5 views
2

Я хочу использовать простой модуль CommonJS в машинописи, а вот 3 файлаКак написать файл описания для модуля CommonJS, что экспорт функционировать

оригинальный Lib: файл

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

определения:

//commonjs-export-function.d.ts 
declare function func(): string; 
export = func; 
программа

машинопись, которые используют его:

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

console.log(func()); 

Когда я бегу TSC я получаю эту ошибку:

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. 

здесь также уже ответил на вопрос, но он не работает с машинописи 2,0

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

ответ

4

Я нашел решение в машинописном документации здесь: 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; 

поэтому файл определения mu должен быть:

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

и импорт с требуют:

//main.ts 
import func = require('./commonjs-export-function'); 
Смежные вопросы