Typescript 如何键入可以有任何键的对象并避免属性';xxx和x27;不存在于类型';{}';警告

Typescript 如何键入可以有任何键的对象并避免属性';xxx和x27;不存在于类型';{}';警告,typescript,Typescript,我有一个函数,可以接收一个对象,它的条目可以是任何东西。对象的类型如下:myObj:{} 我对myObj.count执行条件检查。Typescript显示以下错误: 类型“{}”上不存在属性“count” 如何避免这种情况(我不想写@ts ignore),我需要一个干净的打字 myObj?:{count?:number,[key:string]:any}可以接受吗?还是有更好的方法?如果希望myObj始终拥有count属性,那么不要使用?: myObj?:{count:number,[key:s

我有一个函数,可以接收一个对象,它的条目可以是任何东西。对象的类型如下:
myObj:{}

我对
myObj.count
执行条件检查。Typescript显示以下错误:

类型“{}”上不存在属性“count”

如何避免这种情况(我不想写@ts ignore),我需要一个干净的打字


myObj?:{count?:number,[key:string]:any}
可以接受吗?还是有更好的方法?

如果希望
myObj
始终拥有count属性,那么不要使用

myObj?:{count:number,[key:string]:any}

如果你想让myObj有时拥有
count
,那么按照你说的做:

myObj?:{count?:number,[key:string]:any}
但是,第二种方法不能帮助您避免检查属性是否存在


但是请注意,这只会帮助检查静态存在的属性,如果您正在强制转换为此类型,则该属性可能仍然为null(即使在第一个示例中)

如果您希望
myObj
始终具有count属性,则不使用

myObj?:{count:number,[key:string]:any}

如果你想让myObj有时拥有
count
,那么按照你说的做:

myObj?:{count?:number,[key:string]:any}
但是,第二种方法不能帮助您避免检查属性是否存在


但是请注意,这只会帮助检查静态存在的属性,如果您强制转换为这种类型,则该属性可能仍然为null(即使在第一个示例中)

是的,count属性有时可能会出现。因此,选项2是正确的。是的,count属性有时可能会出现。因此,选项2是正确的。