版本
2.7.14
复现链接
复现步骤
- 运行
pnpm install
(或使用 npm, yarn) - 运行
pnpm type-check
(实际命令为vue-tsc --noEmit
)
预期结果
无错误
实际发生情况
报告了错误:在选项 methods
中找不到方法 data
src/main.ts:6:19 - error TS2339: Property 'method1' does not exist on type 'CreateComponentPublicInstance<{}, {}, {}, {}, {}, ComponentOptionsMixin,
ComponentOptionsMixin, {}, {}, {}, false, OptionTypesType<{}, {}, {}, {}, {}, {}>, {}, {}, {}, {}, {}, {}>'.
6 data1: this.method1(),
~~~~~~~
仓库中的主代码为:
defineComponent({
data() {
return {
data1: this.method1(),
}
},
methods: {
method1(): number {
return 1
}
}
})
5条答案
按热度按时间fnvucqvd1#
igsr9ssn2#
这可能是计算引用其他计算属性需要显式类型注解的问题。你试过这个吗:
sf6xfgos3#
我刚刚尝试了,问题仍然存在。
bcs8qyzn4#
非法使用
对象必须是普通的:原生对象,如浏览器API对象和原型属性将被忽略。
7gcisfzg5#
如果在
data
选项之前将methods
选项移动,错误将会消失。TS Playground链接及相关代码
这是由于TypeScript的推断顺序造成的。
这个限制在Vue3中仍然存在,但
data
上下文的其余键在Vue3中被推断为Function
。与microsoft/TypeScript#52849相关