在父组件中用refs去获取子组件内部的方法或者属性,以下面的demo为例,直接写this.$refs.childRef.getValue()
会报错,报错内容说’Vue | Element | Vue[] | Element[]'a这些类型中,没有我们调用的属性。但是我们很清楚,这个childRef
的类型是ChildComponent
,这个类型中是含有我们所需要的变量或者方法,因此给this.$refs.childRef
添加一个类型断言,告诉编译器,childRef
这个值的类型是ChildComponent
,这样就不会报错了。
断言的两种写法:(this.$refs.childRef as ChildComponent)
或者<ChildComponent>this.$refs.childRef
类型断言即手动指定一个值的类型,类型断言并非是类型转换,断言一个联合类型中不存在的类型会报错!
demo代码:
// 父组件
<template>
<div>
<ChildComponent ref="childRef" />
<div>ChildComponent Value is: {
{childValue}}</div>
<a-button @click="getChildValue">Get ChildComponent Value</a-button>