2014-12-03 2 views
2

я есть такой код:«Не удается найти имя» ошибка компиляции для импортируемого требуемого модуля

///<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 and sio.Socket

support.ts (12,19): ошибка TS2304: Не удается найти имя 'sio'.

support.ts (14,47): ошибка TS2304: Не удается найти имя 'sio'.

Если я поставил 'string' вместо 'sio.Socket', чтобы умышленно получить сообщение об ошибке, он сообщает мне, что ожидаемым типом является Server. теперь, пользуюсь ли я sio.Server или сервером, нет никакой разницы, все еще есть ошибка имени, и я не понимаю, как я должен использовать типы в файлах .d.ts и не могу найти документацию или примеры которые работают на это.

надеюсь кто-то может мне помочь! спасибо ~

+0

Я вижу, что здесь дело обстоит не так, но эти ошибки также появляются, когда вы не ставите ссылки на тип в самой верхней части файла. –

ответ

2

Считая .d.ts file, ожидаемое название типа фактически SocketIO.Server (не sio.Server). Этот конкретный .d.ts-файл предоставляет имена типов глобально вместо экспорта внешнего модуля.

Нечетная ошибка здесь (не может найти имя 'sio') заключается в том, что в домене нет пространства имен, называемого sio.

+0

спасибо! я понимаю, что он работает, теперь спасибо yuu! и жаль, что не включая этот файл .d.ts, но да, тот же, который я использовал, забыл! я сейчас счастлив :) –

Смежные вопросы