我有一个在Typescript文件中实现的类,我能够在它实现的同一个文件中成功创建一个新对象,但如果我尝试将它们导出/导入到单独的文件中,我就会遇到问题。请参阅以下错误消息:
ERROR
nodemon] starting `ts-node src/TestBot.ts`
Initializing Messenger
/Users/some_user/Documents/Src/some_folder/src/TestBot.ts:14
let myBot = new Messenger(my_page_access_token, my_page_verify_token);
^
TypeError: Messenger is not a constructor
at Object.<anonymous (/Users/some_user/Documents/Src/some_folder/src/TestBot.ts:14:17)
我很感激任何解决问题的方法。
这是实现Messenger类的主要文件
// index.ts
class Messenger extends events.EventEmitter {
private readonly pageAccessToken: String;
private readonly pageVerifyToken: String;
constructor(pageAccessToken: String, pageVerifyToken: String) {
super();
if (!pageAccessToken || !pageVerifyToken) {
console.error("Missing Messenger Tokens");
throw new TypeError("Missing Messenger Tokens");
}
console.log("Initializing Messenger");
this.pageAccessToken = pageAccessToken;
this.pageVerifyToken = pageVerifyToken;
}
...
...
}
...
export = Messenger;
在同一目录下的TestBot.ts文件中我实例化它
// TestBot.ts
import Messenger = require('./index');
let http = require('http');
let my_page_access_token = 'access_token';
let my_page_verify_token = 'verify_token';
let myBot = new Messenger(my_page_access_token, my_page_verify_token);
EDIT1:
尝试各种排列
我尝试了各种
的排列// index.ts
// export = Messenger;
// module.exports = Messenger;
// export default Messenger;
// export * from './index';
// export {Messenger};
// export default Messenger;
// TestBot.ts
// import { Messenger } from './index';
// import Messenger from './index';
// import Messenger = require('./index');
// import './index.ts'
答案 0 :(得分:0)
似乎带有类定义的文件名不能是“index.ts”。之后,将其更改为其他名称,我不再有问题。
如果我能找到确切原因,我会更新更多细节。另外,很高兴听到别人的解释。