模板:
<tremplate>
<div ref="element"></div>
</template>
脚本:
export default {
setup() {
const element = ref(null);
return {
element,
};
},
};
这是在vue3中定义一个ref的一种常规方式,但是是用JavaScript的方式。如果我使用TypeScript,我需要为值element
定义一个类型,对吗?
如何确保值element
的类型正确?
5条答案
按热度按时间o4hqfura1#
好吧,这取决于你是否需要它的类型和提供成员信息(公共属性,方法等)。否则,您不必这样做,只需使用
.value
访问未 Package 的引用,使其保持any
类型(我敢打赌您已经猜到了这一点)。但是如果必须这样做,你需要告诉编译器它是什么或者它将被赋值到什么上。为此,你需要使用
ref
的第三个重载(没有参数),并显式地将泛型类型设置为所需的类型-在你的例子中,你需要HTMLDivElement
(或者如果你不关心它必须提供的特定成员,你只需HTMLElement
)。在JavaScript中,没有类型检查,所以在
ref
函数上传递null
就像不传递任何东西一样好(这对于模板引用来说尤其好)*;在某种意义上,它甚至可能会让人误解,因为展开的值实际上会解析为 *null
以外的其他值。ref
的原因是因为DOM元素将在初始渲染后被分配给它。参考文献:
kd3sttzy2#
sh7euo9m3#
该行不正确:
el
不是一个HTMLDivElement。相反,它是该元素的代理。该代理的$el
是实际的HTMLDivElement。虽然我不确定我是否理解正确。在一个组件中,我设法将其键入如下:g6ll5ycj4#
Vue 3.2以上版本
第二个示例
rbpvctlc5#
如果使用
vue-class-component
包(这里的beta v8但是同样用@Component
代替@Option
将在更早的版本中工作):