为什么在.vue中声明的基于ts类的vue组件的静态方法只能在.vue的脚本块中工作?
declare module "*.vue" {
import Vue from "vue";
export default Vue;
}
// Comp.vue
<template>
<div></div>
</template>
<script lang="ts">
import { Component, Vue, Prop } from "vue-property-decorator";
@Component
export default class Comp extends Vue {
mounted() {
}
created(){
}
static notWorkFunc(){
//anything
}
}
export function anotherNotWorkFunc(){
//anything
}
</script>
和使用以下特定代码在项目中添加[[test.ts
<script lang="ts">
import ComP,{anotherNotWorkFun} from "./Comp.vue";
ComP.notWorkFunc()
anotherNotWorkFun()
</script>
test.ts
import ComP,{anotherNotWorkFun} from "./Comp.vue";
ComP.notWorkFunc()
anotherNotWorkFun()
如您所见在
。ts中无效
在。vue作品中
我不知道原因...
回购是https://github.com/WilkinWendy/vue-ts-problem。演示代码位于./src/demo中
FYI
<!-- Comp.vue -->
<template>
<div></div>
</template>
<script lang="ts" src="./Comp.ts"></script>
<style lang="scss" src="./Comp.scss"></style>
然后我们执行以下操作:
// Comp.ts
import { Component } from "vue-property-decorator";
export const SOME_CONST = "SomeValue";
@Component
export class Comp extends Vue{
public static method(): boolean {
return true;
}
}
export default Comp;
这似乎对我们有用,实际上VSCode / Vetur / TypeScript的性能要好得多。另外,当UX用户使用CSS / HTML时,他们不必触摸.ts
文件。