项目中封装了一个fetch方法,
fetch(url: string, params: Record<string, unknown>, option?: IOption): Promise<any>
第二个参数类型设置为 Record<string, unknown>
之后调用这个 fetch
方法封装了一个请求函数 getMenuTree
type IMenuTreeFilter = {
super_menu_id?: string | number
url?: string
is_display?: 'Y' | 'N'
for_edit?: boolean
}
/**
* 获取菜单列表
* @param {IMenuTreeFilter} filterForm
* @returns
*/
const getMenuTree = (filterForm: IMenuTreeFilter) => fetch('/dashboard/DashboardMenuController/menuTree', filterForm, { onlyData: true })
但是如果我用 interface
去声明 IMenuTreeFilter
时编辑器会报错
interface IMenuTreeFilter {
super_menu_id?: string | number
url?: string
is_display?: 'Y' | 'N'
for_edit?: boolean
}
类型“IMenuTreeFilter”的参数不能赋给类型“Record<string, unknown>”的参数。
类型“IMenuTreeFilter”中缺少类型“string”的索引签名。
不知道这是为啥?
答案在这里:TS中的type、interface关于索引签名的区别
省流: