14

我正在使用 Visual Studio Code 和 Vetur 扩展中的 Vue 和 Typescript。问题:当我更新任何代码时,智能感知在处理.vue文件时无法识别更改。在.ts文件中,智能感知正在工作!

我使用这个定义文件,以便打字稿识别.vue文件扩展名:

declare module "*.vue" {
    import Vue from "vue";
    export default Vue;
}

例子

test.ts 刚刚改变

export default class Test {
    // testFunction() {}    // just removed this
    dummyFunction() {}      // added this
}

app.vue 智能感知不工作

在任何.vue文件中,intellisense 不断提示 testFunction 并且无法识别 dummyFunction:

import Test from "./test"
export default class App extends Vue {
    created() {
        const t = new Test()
        t.testFunction()        // allowed - but it doesn't exist
        t.dummyFunction()       // not allowed - but it does exist
    }
}

somefile.ts 智能感知正在工作

在常规的旧 .ts 文件中,智能感知有效。

import Test from "./test"
const t = new Test()
t.testFunction()        // here it works - this is not allowed
t.dummyFunction()       // here it works - this is allowed

如果我关闭 VS Code 并重新打开,则会更新新的更改。这是 Vetur 故障吗?我需要更改我的 tsconfig 或定义文件吗?

4

1 回答 1

1

我相信您需要在 tsconfig 中添加类似的内容:

{
  "include": ["src/**/*.vue"]
}

来自文档:“如果 glob 模式不包含文件扩展名,则仅包含具有受支持扩展名的文件(例如,默认情况下为 .ts、.tsx 和 .d.ts,如果允许则为 .js 和 .jsx设置为真)。”

我不确定 Vetur 的行为如何,但从 TS 的角度来看,这应该可以解决问题。

于 2022-02-09T03:42:35.797 回答