Igo*_*rov 6 validation typescript vuejs3
下面是现代 Vue 3 props 声明的基本示例,其中<script setup lang="ts">包含强制name和可选age:
// <script setup lang="ts">
defineProps<{
name: string,
age?: number
}>()
// </script>
Run Code Online (Sandbox Code Playgroud)
这是相同的声明,但具有age默认值:
// <script setup lang="ts">
withDefaults(defineProps<{
name: string,
age?: number
}>(), {
age: 20
})
// </script>
Run Code Online (Sandbox Code Playgroud)
我的主要问题是:有没有办法将验证器合并到这个新语法中?或者每当我需要添加验证器时,我需要回滚到旧语法,即:
// <script setup lang="ts">
defineProps({
age: {
type: Number,
validator(value: number) => value > 0
}
})
// </script>
Run Code Online (Sandbox Code Playgroud)
我发现了类似的主题,其中一些人建议使用泛型类型并传递参数来定义属性,如下所示:
// <script setup lang="ts">
defineProps<{
age: number
}>({
age: {
validator(value: number) => value > 0
}
})
// </script>
Run Code Online (Sandbox Code Playgroud)
但这种方法不起作用并立即出现错误:( defineProps has both a type-only props and an argument.eslintvue /valid-define-props )