导入的必需模块的“无法找到名称”编译错误

时间:2014-12-03 16:49:14

标签: javascript socket.io typescript

我有这样的代码:

///<reference path='typescript_defs/node.d.ts' />
///<reference path='typescript_defs/socket.io.d.ts' />
import sio = require('socket.io');

function main(io: sio.Server) {
    io.sockets.on('connection', function(socket: sio.Socket) {
    }); 
}
main(sio.listen(4444));

我预计这会在阅读并查看其他示例后起作用,但它在sio.Server和sio.Socket上给出了名称错误

  

support.ts(12,19):错误TS2304:找不到姓名&#39; sio&#39;。

     

support.ts(14,47):错误TS2304:找不到姓名&#39; sio&#39;。

如果我把&#39; string&#39;取代&#s; sio.Socket&#39;故意得到一个错误它告诉我预期的类型是服务器。现在,无论我使用的是sio.Server还是Server,它都没有任何区别,仍然存在名称错误,我不明白我应该如何使用.d.ts文件中的类型并且无法使用找到适合它的文档或示例。

希望有人能帮助我!感谢〜

1 个答案:

答案 0 :(得分:2)

通过阅读.d.ts file,预期的类型名称实际为SocketIO.Server(不是sio.Server)。此特定的.d.ts文件全局公开类型名称,而不是通过外部模块导出。

这里的奇怪错误(找不到名称'sio')是因为 type 名称空间中没有任何内容名为sio