我有一个嵌套的json对象,并为它定义了一个接口
interface Menu {
[key: string]: string[] | Menu;
}
const menuOnlyForRoles: Menu = {
site: {
only: [],
category: {
only: ['manager', 'head', 'lead'],
},
'floor-section': {
only: ['head', 'lead'],
},
},
};
但是当我使用它的时候。它出现了一个警告。
const menuPermissionForKey = menuOnlyForRoles.site || { only: [] };
const rolesCanAccessMenu= menuPermissionForKey.only || [];
▔▔▔▔
any
Property 'only' does not exist on type 'Menu | string[]'.
Property 'only' does not exist on type 'string[]'
我做错了什么或遗漏了什么?
1条答案
按热度按时间yqkkidmi1#
你没有做错任何事,TypeScript只是不能推断你的
menuPermissionForKey
是一个Menu
对象还是一个string
数组。理想情况下,您应该更严格地定义
Menu
类型,除此之外,您可以创建一个类型 predicate :Playground链接
或者,如果处理的是编译时已知的静态数据,可以使用
const
Assert,也可以使用satisfies
运算符在编辑时强制执行类型检查:Playground链接