Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将JS转换为Typescript时出现问题_Javascript_Typescript - Fatal编程技术网

Javascript 将JS转换为Typescript时出现问题

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

原始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.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) {
    }
}