【发布时间】:2020-10-14 02:35:44
【问题描述】:
我正在尝试将 typescript 与 vuejs 一起使用,通常我使用类似的东西
@Component({
props: ['uploadUrl'],
})
export default class SelectionModal extends Vue {
let x = this.uploadUrl // This variable `uploadUrl` is NOT resolved in my IDE
}
但uploadUrl 在我的IDE (phpStorm) 中没有解析
但是我们可以使用vue-property-decorator 来修复它,方法是像记录的here 一样声明@Prop。代码变为:
<template>
// ...
</template>
<script type="ts">
import {Component, Vue, Prop} from 'vue-property-decorator';
@Component
export default class SelectionModal extends Vue {
@Prop(String) readonly uploadUrl!: string
let x = this.uploadUrl // This variable `uploadUrl` is RESOLVED in my IDE
}
</script>
然而,这个基本声明引发了这样的问题
SyntaxError: /myProject/src/path/to/MyComponent.vue: Unexpected token (33:25)
31 |
32 | export default class SelectionModal extends Vue {
> 33 | @Prop(String) readonly uploadUrl!: string
| ^
这里的任何人都有一个想法:
1-如何使用第一种解决方案并解决uploadUrl
2- 或者如何解决Unexpected token 问题?
【问题讨论】:
-
你能创建一个打字稿游乐场来复制这个问题吗?我尝试了类似的in this playground, but it works fine already.
-
另外,不应该是
<script lang="ts">,即lang而不是type吗?我注意到readonly声明是您显示的代码的第一部分,它不是有效的javascript,所以我的猜测是vue 没有将该脚本转换为js,因为lang标签不正确。
标签: typescript vuejs2 properties phpstorm vue-property-decorator