TypeScript下Quasar QTable onRequest事件类型标注报错
问题原因
你出现类型不兼容错误的核心原因是类型用错了层级:
QTableProps['onRequest']是整个onRequest事件回调函数本身的类型,它的完整签名是(requestProp: { /* 分页、筛选等相关属性 */ }) => void- 你直接把这个函数整体的类型标注给回调的入参
props,相当于告诉TypeScript「入参props是一个和onRequest结构一致的函数」,但实际上事件触发时传入的第一个参数是包含分页、筛选配置的普通对象,二者类型自然完全不匹配。
正确类型标注方案
你可以任选以下两种方式实现正确的类型标注:
方案1:用TS内置工具类型提取入参类型
使用TypeScript原生提供的Parameters工具类型,直接从QTableProps['onRequest']的类型签名中提取第一个入参的类型即可:
import type { QTableProps } from 'quasar'; // 提取onRequest回调的首个入参类型 type OnRequestParams = Parameters<QTableProps['onRequest']>[0]; function onRequest(props: OnRequestParams) { // 此处可获得完整类型提示,不会报类型错误 console.log(props.pagination); console.log(props.filter); }
方案2:直接导入Quasar导出的独立入参类型
Quasar已经单独导出了onRequest事件的入参类型,可以直接引入使用,不需要手动提取:
import type { QTableRequestProp } from 'quasar'; function onRequest(props: QTableRequestProp) { // 正常访问所有属性,类型校验通过 const { page, rowsPerPage, sortBy, descending } = props.pagination; // 也可正常调用props.filter、props.getCellValue等内置方法 }
注意:引入时建议加
type修饰符,标记为纯类型导入,避免不必要的运行时引入。
内容的提问来源于stack exchange,提问作者M.A.T
相关产品推荐
相关产品推荐

