2015-02-25 2 views
0

server.tsкак я могу сослаться на значение в машинописи

var app = require('express')(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 
var fs = require('fs'); 


import WonServer = require('./WonServer'); 

var server = new WonServer.WonServer(); 

WonServer.ts

export class WonServer { 
    constructor() { 
    } 
    load() { 
     console.log("loaded"); 
     io.emit('userlist', "asdsadsad"); 
    } 
    sendMessage(msgtype:string, data:string) { 
     io.emit(msgtype, data); 
    } 
} 

Привет Я делаю сервер в node.js

Как Приведи значение io (socket.io) в WonServer.js

+0

Проход в io в конструкторе. –

ответ

1

Общий принцип

Для каждого файла, который должен использовать зависимость, должен быть оператор require или конструктор, принимающий аргумент требуемого типа.

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

Конкретного Ответ

В вашем случае, вы можете попросить его в конструкторе.

export class WonServer { 
    constructor(private io: SocketIOStatic) { 
    } 
    load() { 
     console.log("loaded"); 
     this.io.emit('userlist', "asdsadsad"); 
    } 
    sendMessage(msgtype:string, data:string) { 
     this.io.emit(msgtype, data); 
    } 
} 
+1

Я согласен с этим ответом, также стоит упомянуть, если это не очевидно: 'var server = new WonServer (io);' –

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