错误 TS2345:“菜单”类型的参数不可分配给类型参数
Posted
技术标签:
【中文标题】错误 TS2345:“菜单”类型的参数不可分配给类型参数【英文标题】:error TS2345: Argument of type 'Menu' is not assignable to parameter of type 【发布时间】:2018-10-19 01:59:27 【问题描述】:美好的一天。我是 Type Script 的新手,使用 VSCode。
得到以下错误:
error TS2345: Argument of type 'Menu' is not assignable to parameter of type ' state: string; name: string; type: string; icon: string;
badge?: undefined; children?: undefine...'
代码:
import Injectable from '@angular/core';
export interface BadgeItem
type: string;
value: string;
export interface ChildrenItems
state: string;
name: string;
type?: string;
export interface Menu
state: string;
name: string;
type: string;
icon: string;
badge?: BadgeItem[];
children?: ChildrenItems[];
const MENUITEMS = [
state: '/',
name: 'HOME',
type: 'link',
icon: 'explore'
,
state: 'account',
name: 'ACCOUNT',
type: 'sub',
icon: 'explore',
badge: [
type: 'purple', value: 'new'
],
children: [
state: 'users', name: 'USERS',
]
];
@Injectable()
export class MenuService
getAll(): Menu[]
return MENUITEMS;
add(menu: Menu)
MENUITEMS.push(menu);
我们将不胜感激。
【问题讨论】:
将MENUITEMS
的第一项设置为 state: '/', name: 'HOME', type: 'link', icon: 'explore', badge: [], children: []
我更改了代码,但仍然出现同样的错误。
解决这个问题的正确方法是给你的 MENUITEMS
一个合适的类型来帮助 TypeScript 编译器。 const MENUITEMS: Menu[] = [...]
***.com/questions/17220114/…
【参考方案1】:
只需像下面这样指定MENUITEMS
的类型,警告就会消失
const MENUITEMS : Menu[] = [
state: '/',
name: 'HOME',
type: 'link',
icon: 'explore'
,
state: 'account',
name: 'ACCOUNT',
type: 'sub',
icon: 'explore',
badge: [
type: 'purple', value: 'new'
],
children: [
state: 'users', name: 'USERS',
]
];
【讨论】:
以上是关于错误 TS2345:“菜单”类型的参数不可分配给类型参数的主要内容,如果未能解决你的问题,请参考以下文章
Angular 5 错误 TS2345:“数字”类型的参数不可分配给“字符串”类型的参数