簡體   English   中英

回復:如何將javascript AMD模塊導入外部TypeScript模塊? (使用module.exports =…時)

[英]Re: How can I import a javascript AMD module into an external TypeScript module? (When using module.exports=…)

相關問題: 如何將javascript AMD模塊導入外部TypeScript模塊?

我已經嘗試了上述問題中的解決方法,它肯定有效。 但是當AMD模塊使用module.exports=function ..將function本身作為模塊(不是{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)。

也許我誤會了log2.d.ts中export default的使用。 如何正確編寫類型定義?

嘗試這個:

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

另請參閱: 手冊

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM