【发布时间】:2023-02-18 21:03:52
【问题描述】:
我正在开发一个应用程序Vue 3 (3.2.45),打字稿 (4.9.4)和验证 (3.1.2).
许多的验证组件需要你通过道具指示默认样式、位置或某些 v-model 来显示/隐藏组件。有时,每当我传递 prop(如他们的文档中所指定)时,编译器都会给我以下错误:
Type 'boolean' is not assignable to type 'never'
布尔值只是一个例子,它只是说明我试图传递给 v-model 的任何类型。以下代码是给出错误的示例:
<template>
<div class="main-content">
<h2>Home</h2>
<v-dialog
v-model="dialog"
>
<template v-slot:activator="{ props }">
<v-btn
color="primary"
v-bind="props"
>
Open Dialog
</v-btn>
</template>
<v-card>
<v-card-text>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</v-card-text>
<v-card-actions>
<v-btn color="primary" block @click="dialog = false">Close Dialog</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
</div>
</template>
<script setup lang="ts">
import { ref } from "vue";
const dialog = ref(false);
</script>
在这种情况下,v-对话框组件来自验证需要一个类型为布尔值根据他们自己的文档 (https://next.vuetifyjs.com/en/api/v-dialog/)。
正如你在这里看到的,我在v模型:
代码仍然有效但是我的编译器抱怨并在我的工作区中显示带有这种“错误”红色的文件,这让我很烦恼。
这只是(到目前为止)发生在 Vuetify 组件上。我自己创建和输入的那些不会显示这种行为。
我不知道是否有一种方法可以配置我的文本编辑器 (vs-code) 以忽略此警告,或者我是否做错了什么触发了错误。
【问题讨论】:
-
我有一个项目,其设置与您几乎相同(Vuetify 3.0.7 和 Typescript 4.7.4),并且 vscode 正确推断出该属性:
(property) modelValue?: boolean | undefined。你用Volar吗? -
在我的例子中,如果我不向 v-model 传递任何值,它会将其类型推断为
any,但如果我传递布尔值,那么它会将其推断为boolean,这有点奇怪。我用掌侧.除了 Volar 之外,您还配置了什么不同的东西吗?喜欢任何特定的打字稿插件吗? -
你在使用删除模式吗?
-
@RussDeneychuk 不。我尝试禁用 Typescript Vue 插件,因为它是被推荐的,但我仍然收到错误。
-
只是内置的。以为我启用了takeover mode,但它没有(而且它似乎给出了相同的结果)。另外,我没有令人沮丧的“Typescript Vue 插件”,只有常规的“Vue 语言功能”。将 Vuetify 更新到 3.1.2,结果相同。
标签: typescript vuejs3 vuetify.js