数据类型的属性不存在

Posted

技术标签:

【中文标题】数据类型的属性不存在【英文标题】:Properties do not exist for data type 【发布时间】:2021-08-19 06:57:24 【问题描述】:

我是 TypeScript 的新手,我在数据类型方面遇到了两个问题。

这是我的代码:

const say: object = 
  name: "say",
  aliases: [""],
  description: "",
  usage: "",
  run: (client: object, msg: object, args: string) => 
    if (!args[0]) return;
    msg.channel.send(args.join(" "));
  ,
;

export default say;

出现的错误是:

“对象”类型上不存在属性“通道”。

类型“字符串”上不存在属性“加入”。

我做了一个console.log (typeof msg)console.log (typeof args),实际上它的数据类型是objectstring

我正在寻找将数据类型更改为any 的替代方法。

【问题讨论】:

尝试寻找如何在 TypeScript 中声明自己的类型。更好地理解纯 javascript 也会有所帮助。 【参考方案1】:

如果您确定 msg 的类型,那么您可以创建自己的类型。

interface Msg 
    channel: type here;

at the run, use this interface. (client: object, msg: Msg, args: string)

如果你不确定它的结构,那么就直接说“msg”,不带任何 typedef。

你的意思是args: string[]。在这里对字符串应用连接是没有意义的。

【讨论】:

不知道string []也是一种数据类型。谢谢!!【参考方案2】:

我假设 channelmessagediscord.js 类型。所以你可以从这里检查 discord.js 类型:https://github.com/discordjs/discord.js/tree/master/typings

你可以像这样使用消息类型:

import Message from "discord.js"

在第二个问题中。 join 不是字符串的属性。它是数组的属性,所以 args 可能是 string[]

【讨论】:

不知道string []也是一种数据类型。谢谢!!

以上是关于数据类型的属性不存在的主要内容,如果未能解决你的问题,请参考以下文章

从服务订阅数据时,类型 void 上不存在错误属性订阅?

类型“()=> DocumentData”上不存在属性“数据”

角度:错误 TS2339:“对象”类型上不存在属性“数据”

类型“HttpEvent<Customer>”上不存在属性“数据”

如何判断Dynamic类型的属性是不是存在

obj类型属性取值,属性嵌套取值,为空且不存在安全取值方法