回复:如何将 javascript AMD 模块导入外部 TypeScript 模块? (当使用 module.exports=... 时)
Re: How can I import a javascript AMD module into an external TypeScript module? (When using module.exports=...)
相关问题:
How can I import a javascript AMD module into an external TypeScript module?
我已经尝试了上述问题的解决方法,它确实有效。但是当 AMD 模块 returns 使用 module.exports=function ..
作为模块(不是 {message:Function}
,而是 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 Version 3.2.4)编译了这些*.ts文件,并在浏览器上使用了require.js 2.3.5到运行程序。但是 log2 没有 运行(参见 main.ts)。
也许我误解了 log2.d.ts 中 export default
的用法。如何正确编写类型定义?
试试这个:
// log2.d.ts
declare module 'log2'{
function message(s: string);
export = message;
}
另请参阅:the Handbook。
相关问题: How can I import a javascript AMD module into an external TypeScript module?
我已经尝试了上述问题的解决方法,它确实有效。但是当 AMD 模块 returns 使用 module.exports=function ..
{message:Function}
,而是 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 Version 3.2.4)编译了这些*.ts文件,并在浏览器上使用了require.js 2.3.5到运行程序。但是 log2 没有 运行(参见 main.ts)。
也许我误解了 log2.d.ts 中 export default
的用法。如何正确编写类型定义?
试试这个:
// log2.d.ts
declare module 'log2'{
function message(s: string);
export = message;
}
另请参阅:the Handbook。