San*_*jay 19 typescript vue.js vuejs3
所以我有Component1
,
<!-- Component1 -->
<script lang="ts" setup>
defineProps<{ msg: string }>()
</script>
<template>
<p>{{ msg }}</p>
</template>
Run Code Online (Sandbox Code Playgroud)
然后我在全球范围内注册它,
// main.ts
import { createApp } from "vue"
import App from "./App.vue"
import Component1 from "./Component1.vue"
const app = createApp(App)
app.component("Component1", Component1)
app.mount("#app")
Run Code Online (Sandbox Code Playgroud)
之后我用它作为,
<script setup lang="ts"></script>
<template>
<Component1 />
</template>
Run Code Online (Sandbox Code Playgroud)
但是我没有得到 的 props 的类型推断Component1
。那么如何为这个全局组件添加打字稿支持呢?
ton*_*y19 23
该vue
包导出一个GlobalComponents
可以使用全局组件的定义进行扩展的接口。例如,您可以在 中添加模块增强src/global-components.d.ts
,如Volar 文档中所示:
// src/global-components.d.ts
import Component1 from '@/components/Component1.vue'
declare module '@vue/runtime-core' {
export interface GlobalComponents {
Component1: typeof Component1,
}
}
Run Code Online (Sandbox Code Playgroud)
我发现 @tony19 的答案几乎正确 \xe2\x80\x94\xc2\xa0Volar 识别了该组件,但没有提供正确的类型提示。相反发现我需要延长@vue/runtime-core
// src/global-components.d.ts\nimport Component1 from '@/components/Component1.vue'\n\ndeclare module '@vue/runtime-core' {\n export interface GlobalComponents {\n Component1: typeof Component1,\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
8613 次 |
最近记录: |