vue3源码ref TS阅读

vue3源码ref TS阅读

这里的ref函数返回的[T] extends [Ref] ? T : xxx

我特意查了一下TS官网

vue3源码ref TS阅读

这里是为了防止传联合类型才做了一层保护。

但是我觉得放在VUE 这里 语境好像不对,有大神解释一下吗?


回答:

我觉得语境没啥问题吧,就是为了约束联合类型分配。

如果有一个类型如下:

interface A {

a: number

}

type Test = A | Ref

如果不约束类型分配,在进行 extends 运算时:

// Test 代入 T extends Ref ? T : Ref<UnwrapRef<T>> 运算

Test extends Ref

=> (A extends Ref ? T : Ref<UnwrapRef<T>>) | (Ref extends Ref ? T : Ref<UnwrapRef<T>>)

=> Ref<UnwrapRef<T>> | T

这是不符合预期的,预期想要得到的结果应该是 Ref<UnwrapRef<Test>>,所以要约束类型分配。

以上是 vue3源码ref TS阅读 的全部内容, 来源链接: utcz.com/p/937600.html

回到顶部