Ric*_*ard 9 typescript vetur vuejs3
我在 main.ts 中添加了一个全局属性,并尝试在组件中访问它。但是我收到错误:
Property '$const' does not exist on type 'ComponentPublicInstance<{}, {}, {}, {}, {}, EmitsOptions, {}, {}, false, ComponentOptionsBase<{}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, EmitsOptions, string, {}>>'.Vetur(2339)
Run Code Online (Sandbox Code Playgroud)
我认为我需要增强类型,typescript 现在认为 $const 是任何类型,但是我不知道如何在 Vue 3 中执行此操作,文档中也没有提及。
主要.ts
import { createApp } from "vue";
import App from "./App.vue";
import store from "./store";
import * as constants from "@constants";
const app = createApp(App);
app.config.globalProperties.$const = Object.freeze(constants);
app.use(store);
app.mount("#app");
Run Code Online (Sandbox Code Playgroud)
成分
<script lang="ts">
import { defineComponent } from "vue";
export default defineComponent({
name: "Header",
computed: {
tags() {
return Object.entries(this.$const.TAGS);
}
}
});
</script>
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激。
nam*_*ato 29
@vue/runtime-core您可以在应用程序中扩充TypeScript 模块:
declare module '@vue/runtime-core' {
interface ComponentCustomProperties {
$const: Record<string, unknown>;
}
}
export {} // Important! See note.
Run Code Online (Sandbox Code Playgroud)
这是一个文档:ComponentCustomProperties
重要提示: TS 模块增强仅在放置在module中时才能正常工作。
在 TypeScript 中,就像在 ECMAScript 2015 中一样,任何包含顶级
import或 的文件export都被视为模块。相反,没有任何顶级import或export声明的文件被视为其内容在全局范围内可用的脚本(因此也适用于模块)。
因此,该文件必须至少包含一个顶级import或export语句,即使是空的(如上例所示) -类型增强放置
| 归档时间: |
|
| 查看次数: |
14203 次 |
| 最近记录: |