问题:ts报错
A spread argument must either have a tuple type or be passed to a rest parameter.ts(2556)
(parameter) rest: Parameters<KeyMap[K]>
代码:
<script lang="ts" setup>
type KeyMap = {
loading: () => unknown
play: (duration: number) => unknown
}
type EmitsType = {
[K in keyof KeyMap]: Parameters<KeyMap[K]>
}
const emit = defineEmits<EmitsType>()
const handleEmit = <K extends keyof KeyMap>(event: K, ...rest: Parameters<KeyMap[K]>) => {
emit(event, ...rest)
}
</script>
vue版本 3.3.4, node环境 16.13.0 vscode/ts版本 5.1.3 volar版本:1.8.2
看了下你的代码没问题,这是typescript不兼容导致的,升级 TypeScript 版本到最新,或者考虑不使用展开操作符,而是将参数直接传递给 emit() 函数即可。例如这样:
const emit = defineEmits<EmitsType>()
const handleEmit = <K extends keyof KeyMap>(event: K, ...rest: Parameters<KeyMap[K]>) => {
emit(event, rest)
}
个人认为升级版本的解决方法最容易。
_
更新一下这个回答:
将Parameters<KeyMap[K]>
改为元组类型,或者将...rest
传递给rest参数试试。具体代码如下:
const handleEmit = <K extends keyof KeyMap>(event: K, ...rest: Parameters<KeyMap[K]>[]) => {
emit(event, ...rest)
}
或者:
const handleEmit = <K extends keyof KeyMap>(event: K, rest: Parameters<KeyMap[K]>) => {
emit(event, rest)
}
表格和el-row的布局突然报这个ts错误是什么原因 之前好好的,今天突然就报了 怎么解决?
这不是都找到类型了吗?这个报错是什么意思?如何解决呢? 消除错误
events.js:377 RangeError [Error]: Maximum call stack size exceeded Emitted 'error' event on process instance at: npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! sea-wind-power@1.0.0 dev: vite --hos
大哥们,这个ts报错,原始svg上没t这么解决 其他地方搜不到相关结果
每个文件第一行都报这个错。
我首先使用 vue-cli 创建了一个项目 除了勾选了一个 typescript 之后,其他都是默认,一路回车 然后安装了几个依赖 引入 Antd 然后,从 https://antdv.com/components/menu-cn 赋值关于 a-menu 的 demo 代码 修改 src/components/HelloWorld.vue 然后运行 yarn serve 解决打开浏览器就报错了: