1

出现 Vetur 错误“无法调用可能‘未定义’的对象。” 在应该没问题的线路上。我确实在 Vetur 的 VS 代码设置中选中了“使用工作区依赖项”。

import { defineComponent } from "vue"

export default defineComponent({
  name: "FormGroup",
  setup(_, { emit, slots }) {
    const validationErrorFree = () => {
      const vnodes = slots?.default() // <-- Vetur errors on slots?.default()
      const formInputs = vnodes.filter(
        (vnode) => vnode?.componentOptions?.tag === "FormInput",
      )
      ...

Vetur 不应该理解 TypeScript 可选链吗?我也尝试添加

if (slots === undefined) return true

在显示错误的行之前(并且它没有改变任何东西)。与包装相同的事情:

if (slots !== undefined) {

围绕函数的内部。对我忽略了什么有什么想法吗?

4

1 回答 1

0

使用! 非空断言运算符 slots!.default()断言Really! I'm not null

请记住,你应该确保你知道它不会为空,否则你会得到一个错误,比如无法default()在未定义上调用。

应对它为空的可能性可能是明智的,并且您可以在检查后使用空断言运算符以确保其不为空。

于 2020-08-09T15:03:05.753 回答