在反应对象中添加嵌套函数时嵌套 ref 参数出现 Vue 和 Typescript 错误

问题描述 投票:0回答:0

重现错误的链接:这里

vue 2.7 & 3
中,如果我没弄错的话,任何嵌套在
ref
ref
中的对象中的
reactive()
将按照here

的解释展开

这在以下简单示例中工作正常并且符合预期:

interface IName {
  first: string;
  last: string;
  sayHi?: () => void;
}

interface IPerson {
 name: IName;
 isAdult: boolean;
}

const me: IPerson = reactive({
  isAdult: ref(false),
  name: {
    first: ref("first"),
    last: "last"
  },
});

没有检测到错误,一切都很好,因为

reactive
展开所有嵌套的
ref
s 并且对象的类型是
IPerson

但是当我决定在嵌套对象中实现可选函数

sayHi: () => void
name
出现
ts
错误

const me: IPerson = reactive({
  isAdult: ref(false), // Type 'Ref<boolean>' is not assignable to type 'boolean'.ts(2322)
  name: {
    first: ref("first"), // Type 'Ref<string>' is not assignable to type 'string'.ts(2322)
    last: "last"
  },
  sayHi: function () {
    console.log("Hi !")
  }
});

奇怪的是,我发现它与

sayHi
无关,但是当我在对象的任何级别添加任何功能时都出现错误
me
。知道当我服务/构建我的应用程序时一切正常,没有任何错误,我不明白为什么,这是打字稿错误或限制还是其他原因

typescript vue.js tsc vue-reactivity
© www.soinside.com 2019 - 2024. All rights reserved.