J'ai défini une classe simple User
dactylographiée comme suitEmitting Tapuscrit Data Objects sur Socket.IO
export class User {
constructor(public id: string);
}
de mon serveur socket.io J'émets un message avec une version instanciée de cette classe User
, par exemple,
var user = new User('billy');
io.emit('MyMessage', user);
sur mon client, j'écoute mon message comme suit
io.on('MyMessage', (user: User) => {
console.log(user); // This prints '[object]'
console.log(user.id); // This prints 'undefined'
console.log(user[0].id); // This prints 'billy'
}
données entre prises semble donc être envoyé comme un tableau d'objets, la définition dactylographiée pour la méthode emit
montre également ce, par exemple,
emit(event: string, ...args: any[]): Namespace;
Ainsi, est la façon la plus propre pour moi d'utiliser les données envoyées à utiliser l'adressage de tableau comme indiqué dans la troisième ligne du journal de la console ci-dessus, c.-à-d. user[0].id
, ou existe-t-il une manière plus propre de le faire?
Étant nouveau js et ts, le sucre syntactique déstructurant est la chose la plus douce que j'ai apprise aujourd'hui! –