版本
2.6.11
重现步骤
创建可选属性为对象的组件并尝试访问其属性
import Vue, { PropType } from 'vue';
Vue.extend({
props: {
container: Object as PropType<{ n: number }>,
// or container: Number
},
mounted () {
// should fail because this.container could be undefined
console.log(this.container.n);
},
});
需要什么?
TS错误:对象可能未定义
到底发生了什么?
无错误
注意事项
它与Composition API插件一起按预期工作
7条答案
按热度按时间r7xajy2e1#
@posva你的意思是Vue的行为是正确的,而VCA的行为是错误的?
w7t8yxp52#
你好@jacekkarczmarczyk,
Object as PropTypeVCA<{ foo: number }>
是干什么用的?您的意思是:
uqxowvwt3#
我最初在vue repo(而不是vue-next)中创建了这个问题,我不知道为什么@posva将其移到这里
在普通视图中,您的示例显示为
number
,但恕我直言,它应该是number | undefined
,就像VCA和vue-next中一样yfjy0ee74#
抱歉,因为您关注的是composition-api错误,这让我感到困惑
kqlmhetl5#
是的,我想我没有把实际问题强调得足够清楚,对不起,谢谢
o4tp2gmn6#
BWT -由于
type: Number
也重现了这个问题,我认为问题标题中的PropType
是没有必要的,虽然不确定什么标题会更合适ltskdhd17#
我编辑了代码示例,以使其不包含Composition API插件