相关问题:如何将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中的使用。如何正确编写类型定义?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句