为什么VS Code不会跟踪JavaScript的变量类型?

时间:2020-09-25 00:47:36

标签: javascript visual-studio-code

我正在尝试使用JS创建Discord机器人。我为要执行的每个命令创建一个.js文件,并且在“主要”脚本中进行了检查,该调用将调用其他命令脚本。当我说VS代码不会告诉我参数的变量类型,也不会告诉我有关方法调用的任何信息时,我将使用图片来显示我的意思。在这些命令.js脚本中,Intellisense似乎也不起作用。

背景信息:我有很多使用Java编程的经验。出于某种原因,JS似乎让我感到困惑,但是我想更好地学习和理解它。

我不会显示所有代码,仅显示示例所需的代码。

main.js脚本:

require('dotenv').config();
const { Client } = require('discord.js');
const client = new Client();

const prefix = "++";
const fs = require('fs');
client.commands = new Discord.Collection();

const commandFiles = fs.readdirSync('.src/commands/').filter(file => file.endsWith('.js'));

for(const file of commandFiles){
    const command = require(`.src/commands/${file}`);

    client.commands.set(command.name, command);
}
client.on('message', (message) => {
    if(message.author.bot) return; 

    console.log(`[${message.author.tag}]: ${message.content}`);

    
    if(!message.content.startsWith(prefix) || message.author.bot) return;

    const args = message.content.slice(prefix.length).split(/ +/); 
    const command = args.shift().toLowerCase(); 


    if(command === 'ping'){
        client.commands.get('ping').execute(message, args);

});

ping.js脚本:

module.exports = {
    name: 'ping',
    description: 'This is a ping command.',
    
    execute(message, args){
        message.channel.send('Pong!');
    }
}

图片: 它只是说了任何一种,我认为是任何变量类型,但是……这似乎很杂乱且难以理解。

main.js https://gyazo.com/86f7118513df791743def98bcf052f06

ping.js https://gyazo.com/06bb2e47a3fd39d2e4445591d8537131

1 个答案:

答案 0 :(得分:0)

Discord.js send()返回Promise<(Message)>Promise<(Array<Message>)>discord.js docs for channel.send())。承诺对于任何API中的顺序任务都非常有用,但似乎不是您的环境可以识别的数据类型。如果VSCode和IntelliJ(以及许多其他IDE)无法识别方法的返回值的数据类型,或者未预定义(与JS函数或方法相比,它在Java中更常见),则它们将突出显示该方法的返回值为any