重现错误的链接:这里
在
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
。知道当我服务/构建我的应用程序时一切正常,没有任何错误,我不明白为什么,这是打字稿错误或限制还是其他原因