vue,函数返回reactive对象,返回类型应该如何申明?

网上大部分是关于直接赋值的方法。
如:

interface Data {
  name: number
}

const data: Data = reactive({
  name: 1
})

这段代码运行确实不会报错,data的类型就是Data

但是,我想要实现如:

const renderData =() => {
  return reactive({
    name: 1
  })
}

这个时候不管是这样:

const renderData =(): Data => {
  return reactive({
    name: 1
  })
}

还是这样:

const renderData: Data =() => {
  return reactive({
    name: 1
  })
}

加类型都会报错,猪脑过载了,求指教。

阅读 2.9k
1 个回答

按照 Vue 官方文档为 reactive() 标注类型的描述,确实应该如此声明类型:

interface Data {
  name: number;
}

const data: Data = reactive({
  name: 1
});

函数返回 reactive 的话,应该如下声明:

const renderData = (): Data => {
  return reactive({
    name: 1
  });
};

如果报错可能是 IDE 没有识别,可以尝试更新 IDEVue 插件版本,或者是手动指定泛型:

const renderData = (): Data => {
  return reactive<Data>({
    name: 1
  });
};
不推荐使用 reactive() 的泛型参数,因为处理了深层次 ref 解包的返回值与泛型参数的类型不同。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏