【问题标题】:Type 'Player | undefined' is not assignable to type 'Player'. Type 'undefined' is not assignable to type 'Player'.ts(2322)输入“播放器 | undefined' 不可分配给类型 'Player'。类型“未定义”不可分配给类型“播放器”.ts(2322)
【发布时间】:2021-10-12 17:51:42
【问题描述】:

我正在尝试维护代码,但我的项目无法编译我从可以从 SocketID 获取玩家名称的方法中遇到此错误,它告诉我,就像标题说的是未定义的一样。 你能帮我修改一下这个方法让它工作吗? 非常感谢

getPlayerFromSocketID(socketId: string): Player {
    return this.players.find((p) => p.getSocketId() === socketId);
}

在这样的其他方法中,我没有收到错误

removePlayer(playerName: string): void {
    console.log('Removing player from playerManager : ' + playerName);
    const player = this.players.find((p) => p.getName() === playerName);

    if (player !== undefined) {
        this.players.splice(this.players.indexOf(player), 1);
    }
 }

【问题讨论】:

    标签: angular typescript socket.io


    【解决方案1】:
    getPlayerFromSocketID(socketId: string): Player {
    

    你说过你要返回一个 Player,但代码实际上可以返回 undefined,所以 typescript 指出了不匹配的地方。由于 undefined 是可能的,请更新您的返回类型:

    getPlayerFromSocketID(socketId: string): Player | undefined {
    

    或者,您可以将其关闭,然后 typescript 会为您解决问题:

    getPlayerFromSocketID(socketId: string) {
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-06
      • 2020-07-05
      • 2021-01-12
      • 2021-12-05
      • 1970-01-01
      • 2023-01-18
      相关资源
      最近更新 更多