Javascript 将JS转换为Typescript时出现问题
原始JS代码:Javascript 将JS转换为Typescript时出现问题,javascript,typescript,Javascript,Typescript,原始JS代码: net.createServer(function (socket) { // Identify this client socket.name = socket.remoteAddress + ":" + socket.remotePort 我的转换尝试: class Peer { public sock: net.Socket; public name: string; public pid: number; constructor(sock:net.Socke
net.createServer(function (socket) {
// Identify this client
socket.name = socket.remoteAddress + ":" + socket.remotePort
我的转换尝试:
class Peer {
public sock: net.Socket;
public name: string;
public pid: number;
constructor(sock:net.Socket,name:string)
{
sock = sock;
name = name;
}
}
// Load the TCP Library
var cid: number =0;
// Keep track of the chat clients
var clients: Peer[] = [];
// Start a TCP Server
net.createServer(function (socky: net.Socket) {
// Identify this client
var peer:Peer=new Peer(socky,"");
peer.name = peer.sock.remoteAddress + ":" + peer.sock.remotePort
第一个代码运行平稳,没有任何问题,第二个输出:
C:\Users\Morgan\Desktop\typescript-starter\dist\app.js:21
peer.name = peer.sock.remoteAddress + ":" + peer.sock.remotePort;
^
TypeError: Cannot read property 'remoteAddress' of undefined
at Server.<anonymous> (C:\Users\Morgan\Desktop\typescript-starter\dist\app.j
s:21:21)
at emitOne (events.js:96:13)
at Server.emit (events.js:188:7)
at TCP.onconnection (net.js:1459:8)
完整的.TS文件:
完整的.JS文件:
完成TS到JS转换文件:
我尝试过为套接字设置访问器,但从未奏效。
如果所有的工作都在socky上完成,它会工作,但是如果我经过peer,则会弹出未定义的错误。您的
peer
构造函数没有设置其实例成员。它正在设置本地参数sock
和name
你可能想写一些更接近这个的东西:
class Peer {
public sock: net.Socket;
public name: string;
public pid: number;
constructor(sock: net.Socket, name: string) {
this.sock = sock;
this.name = name;
}
}
作为提示,TypeScript有一个速记,因为这种代码编写起来很麻烦
class Peer {
public pid: number;
constructor(public sock: net.Socket, public name: string) {
}
}
请注意每个参数上的
public
修饰符。这会自动为每个参数创建一个公共属性。修复了所有问题,非常感谢!我是新手,经过艰苦的学习,非常感谢你的提示!:)2分钟后验证!
class Peer {
public pid: number;
constructor(public sock: net.Socket, public name: string) {
}
}