【发布时间】:2021-08-16 09:30:19
【问题描述】:
我使用 onMonted 钩子创建父组件 Product vue:
setup () {
let data = reactive({
product: {},
productInfo: {},
loaded: false,
shippingDate: ''
})
onMounted(async () => {
const product = await findProduct()
data.productInfo = productInfo(product)
data.product = product
data.loaded = true
})
return { data }
},
子组件ProductAttributes
props: {
product: {
type: Object as PropType<Product>,
required: true
}
},
setup (props) {
const configurableOptions = ref([])
const configurableChildren = ref([])
onMounted(() => {
configurableChildren.value = props.product.configurable_children
//@ts-ignore
configurableOptions.value = props.product.configurable_options.map((option: ConfigurableOptions) => {
option.values = option.values.sort((a: ConfigurableOptionsValue, b: ConfigurableOptionsValue) => {
return parseInt(a.value_index) - parseInt(b.value_index)
})
return option
})
// resetAttrs()
})
return {
configurableChildren,
configurableOptions
}
}
但在这种情况下,typescript 向我显示错误Property 'configurable_children' does not exist on type 'unknown'.但如果我将 setup function props 更改为 setup (props: { product: Product }) { 并将 props 更改为props: ['product'] typescript 将停止显示错误。
为什么会这样?为什么 typescript 不从 PropType 中提取类型?
PS 我用的是defineComponent
【问题讨论】:
-
你用的是哪个版本的vue?你能在一个虚拟组件中重现这个吗?我只是出于好奇尝试了我的一个组件,但没有遇到同样的问题。
-
一个
unknown属性通常表示props声明中的一个问题,甚至是与当前错误无关的属性。你能显示props选项的完整声明吗?
标签: typescript vue.js vuejs3