fix(types): make $refs undefined possible (#11112)
Added undefined as a return type of $refs as it was quite hard to convince typescript that something COULD be undefined if you type in a ref that doesn't exist,
I also changed the two array statements from `Element[] | Vue[]` to `(Element | Vue)[]` because it's not guaranteed that they are ALL Elements or they are ALL Vue components. (Very likely, yes, but not always)
For example
```html
<template v-for="(a, index) of b">
<div v-if="index % 2 === 0" ref="test"></div>
<my-component v-else ref="test"></my-component>
</template>
```