Usando globalProperties no Vue 3 e Typescript
Oct 03 2020
Eu adicionei uma propriedade global em main.ts e estou tentando acessá-la em um componente. no entanto, estou recebendo o erro:
Property '$const' does not exist on type 'ComponentPublicInstance<{}, {}, {}, {}, {}, EmitsOptions, {}, {}, false, ComponentOptionsBase<{}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, EmitsOptions, string, {}>>'.Vetur(2339)
Acho que preciso aumentar o tipo, o typescript considera $ const como qualquer tipo agora, no entanto, não sei como fazer isso no Vue 3 e não há menção nos documentos.
main.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");
componente
<script lang="ts">
import { defineComponent } from "vue";
export default defineComponent({
name: "Header",
computed: {
tags() {
return Object.entries(this.$const.TAGS);
}
}
});
</script>
Qualquer ajuda seria apreciada.
Respostas
4 namoscato Oct 04 2020 at 04:11
Eu apenas respondi uma pergunta semelhante, mas vai parafrasear aqui:
Você pode aumentar o @vue/runtime-coremódulo TypeScript em seu aplicativo:
declare module '@vue/runtime-core' {
interface ComponentCustomProperties {
$const: Record<string, unknown>;
}
}
semelhante a como funcionava no Vue 2.
Verifique o ComponentCustomPropertiescódigo-fonte da interface para obter mais informações.
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino