Discord.js 空值检查在 TypeScript 中不起作用

Posted

技术标签:

【中文标题】Discord.js 空值检查在 TypeScript 中不起作用【英文标题】:Discord.js Null checking not working in TypeScript 【发布时间】:2020-06-23 02:05:23 【问题描述】:

我一直试图让我的 discord 机器人在 TypeScript 中工作,但我遇到了一个问题。我正在尝试执行 msg.reply(string),但它显​​示“无法调用可能为‘null’的对象。”即使我只是检查它是否为空。这是我当前的代码:

import Discord = require("discord.js");

const client: Discord.Client = new Discord.Client();

client.on("ready", () => 
    console.log(`connected as $client.user?.tag`);
);

client.on("message", msg => 
    if (msg == null)
        return;
    

    msg.reply("hi");
);

我知道如果我关闭严格的空检查,我可以避免它,但我宁愿保持它。

任何帮助将不胜感激,谢谢!

编辑

这是 VS-Code 编译器给我的:

app.ts:14:5 - error TS2721: Cannot invoke an object which is possibly 'null'.

14     msg.reply("hi");
       ~~~~~~~~~


Found 1 error.

The terminal process terminated with exit code: 2

【问题讨论】:

【参考方案1】:

在条件块中粘贴使用msg的代码,例如:

client.on("message", msg => 
    if (msg)
        msg.reply("hi");
    
);

【讨论】:

感谢您的快速回复,但这似乎并没有改变任何事情。我仍然遇到同样的错误。 对不起!您能否将完整的编译器输出添加到您的示例中,还请确保它是最小且可重现的......

以上是关于Discord.js 空值检查在 TypeScript 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何检查消息是不是存在? (discord.js)

如何在 Discord.js 中检查消息是不是为 DM?

如何在 discord.js 中检查交互权限

检查用户是不是在新的 discord.js 版本中具有角色

检查用户是不是可以在提到的频道 discord.js 中发送消息

MongoDB / Discord.js - 检查集合的存在