回复:如何将javascript AMD模块导入外部TypeScript模块?(使用module.exports = ...时)

hoge1e3

相关问题:如何将javascript AMD模块导入外部TypeScript模块?

我已经尝试了上述问题中的解决方法,它肯定可以工作。但是,当AMD模块使用以下命令将功能本身作为模块(不是{message:Function},而是Function自身)返回时,它不起作用module.exports=function ..

log.js :(与上面的问题相同)

define(["require", "exports"], function(require, exports) {
    function message(s) {
        console.log(s);
    }
    exports.message = message;
});

log.d.ts :(相同)

declare module 'log'{
    export function message(s:string);
}

log2.js:

define(["require", "exports","module"],function(require, exports,module) {
    function message(s) {
        console.log(s);
    }
    module.exports = message;
});

log2.d.ts:

declare module 'log2'{
    export default function (s:string);
}

main.ts:

import log = require('log'); 
log.message("hello");  // It works

import log2 = require('log2'); 

log2("hello");  // Error error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'typeof import("log2")' has no compatible call signatures.

log2.default("hello"); // Compile passed. But runtime error on the browser (Uncaught TypeError: log2.default is not a function)

我使用tsc -m amd(tsc版本3.2.4)编译了这些* .ts文件,并使用require.js 2.3.5在浏览器上运行该程序。但是log2无法运行(请参阅main.ts)。

也许我误解了export default在log2.d.ts中的使用如何正确编写类型定义?

尝试这个:

// log2.d.ts
declare module 'log2'{
    function message(s: string);
    export = message;
}

另请参阅:手册

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何导入在Typescript中使用module.exports =的CommonJS模块

使用AMD模块时,避免在Typescript中重复引用/导入外部javascript库

使用外部模块时如何正确使用TypeScript接口?

当框架有外部依赖时,如何将 iOS 框架作为 git 子模块导入

如何将 .then() 函数的响应放在 module.exports 中?

笑话:使用module.exports时如何模拟一个特定功能

如何将 module.exports 更改为导入和导出?

编译TypeScript时如何处理外部模块?

如何将外部 javascript 模块导入邮递员?

如何从Typescript上的外部模块导入类

作为参数传递时无法设置module.exports

通过modules.exports调用javascript函数时出错

如何将Typescript的声明与从模块导入的接口合并使用?

使用modules.exports函数时,Cordova挂钩未运行

使用TypeScript和AMD模块时,“严格使用”在哪里?

定位到es6或更高版本时,无法将外部模块编译为amd或commonjs

使用模块时如何避免导入默认符号?

使用Go模块时如何导入本地软件包

JavaScript module.exports回调

如何从module.exports导出对象?

module.exports = function() 如何调用

如何从函数内部修改module.exports?

如何从module.exports访问函数

RequireJS模块的TypeScript编译生成行Object.defineProperty(exports,“ __esModule”,{value:true}); 如何摆脱它?

如何为替换“ exports”对象的模块创建Typescript(1.8)类型定义?

NodeJS module.exports子模块

module.exports“未定义模块”

module.exports 找不到模块

在引用模块的导出名称时,导入如何与节点模块一起使用?