环境
"dependencies": {
"cross-spawn": "^5.1.0",
"vue": "2.5.8"
},
"devDependencies": {
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
"babel-preset-env": "^1.6.0",
"cross-env": "^5.0.5",
"css-loader": "^0.28.7",
"file-loader": "^1.1.4",
"ts-loader": "^3.1.1",
"typescript": "^2.6.1",
"vue-loader": "^13.0.5",
"vue-template-compiler": "^2.4.4",
"webpack": "^3.6.0",
"webpack-dev-server": "^2.9.1"
}
直接上代码
<script lang="ts">
import Vue from "vue"
export default Vue.extend({
props: {
inita:Number
},
data:function(){
return {
a:function(){
return this.inita
}
}
},
computed:{
b:function(){
return this.inita;
}
},
methods:{
c:function(){
return this.inita;
}
}
})
</script>
问题
报错:Property 'inita' does not exist on type '{ a: () => any; }'
报错:Property 'inita' does not exist on type '{ b: () => any; }'
然而methods就没问题
楼上的答案都不正确,这是ts类型检查的问题,报错很明显的告诉你,a函数和b函数的返回值默认是
any
,所以你要指定a函数和b函数的返回值的类型就好了,在data函数里面不需要再用函数来返回一个值,直接this.inita获取就好了