Vetur,解构道具的类型推断有额外的未定义类型?
Vetur, type inference of deconstructed props has extra undefined type?
使用以下代码,Vetur 推断出 x,y
具有类型 number | undefined
。
undefined
会在进一步使用 x,y
时引发大量警告。
如何从类型推断中删除 undefined
?
<script lang="ts">
import { defineComponent } from 'vue'
export default defineComponent({
props: { x: Number, y: Number },
setup(props) {
let { x, y } = props
},
})
</script>
默认情况下,所有 props
都是可选的(因为它可能是 undefined
),因此您的 prop
被键入为 number | undefined
。
您可以根据需要使用长形式的 prop 声明来声明 prop
,这会从 prop
的类型中删除 | undefined
:
<script lang="ts">
import { defineComponent } from 'vue'
export default defineComponent({
props: {
x: {
type: Number,
required: true, //
},
y: {
type: Number,
required: true, //
},
},
setup(props) {
let { x, y } = props
},
})
</script>
顺便说一句,Vetur 已被弃用,Volar 是 Vue 3 和 TypeScript 官方支持的 VS Code 扩展,因此请考虑切换。
使用以下代码,Vetur 推断出 x,y
具有类型 number | undefined
。
undefined
会在进一步使用 x,y
时引发大量警告。
如何从类型推断中删除 undefined
?
<script lang="ts">
import { defineComponent } from 'vue'
export default defineComponent({
props: { x: Number, y: Number },
setup(props) {
let { x, y } = props
},
})
</script>
默认情况下,所有 props
都是可选的(因为它可能是 undefined
),因此您的 prop
被键入为 number | undefined
。
您可以根据需要使用长形式的 prop 声明来声明 prop
,这会从 prop
的类型中删除 | undefined
:
<script lang="ts">
import { defineComponent } from 'vue'
export default defineComponent({
props: {
x: {
type: Number,
required: true, //
},
y: {
type: Number,
required: true, //
},
},
setup(props) {
let { x, y } = props
},
})
</script>
顺便说一句,Vetur 已被弃用,Volar 是 Vue 3 和 TypeScript 官方支持的 VS Code 扩展,因此请考虑切换。