Typescript 为Vue道具创建类型的正确方法是什么
我试图在Vue js中为我的道具创建一个自定义的Typescript 为Vue道具创建类型的正确方法是什么,typescript,vue.js,nuxt.js,typescript-typings,vue-props,Typescript,Vue.js,Nuxt.js,Typescript Typings,Vue Props,我试图在Vue js中为我的道具创建一个自定义的类型,我创建了一个types文件夹,并将其添加到tsconfig.typeRoots中,IntelliSense和所有其他功能都正常工作,编译时没有问题,但当我访问该组件时,我得到一个错误,Car没有定义,但我已经定义了它,它在其他地方也能工作,但在检查官方文档后,我知道prop需要一个构造函数,所以我重新定义了类型,将其定义为声明类Car,并添加了一个构造函数原型,但同样的问题再次出现 以下是文件: 汽车部件 <script lang=&q
类型
,我创建了一个types文件夹,并将其添加到tsconfig.typeRoots中,IntelliSense和所有其他功能都正常工作,编译时没有问题,但当我访问该组件时,我得到一个错误,Car没有定义
,但我已经定义了它,它在其他地方也能工作,但在检查官方文档后,我知道prop需要一个构造函数
,所以我重新定义了类型,将其定义为声明类Car
,并添加了一个构造函数原型,但同样的问题再次出现
以下是文件:
汽车部件
<script lang="ts">
import Vue from "vue";
export default Vue.extend({
name: "the-car",
props: {
car: {
required: true,
type: Car,
},
},
});
</script>
如果您介意使用Typescript接口,那么您可以检查这个
在您的情况下,在创建汽车界面后
:
props: {
car: {
required: true,
type: Object as () => Car,
},
},
编辑:
作为@Chin。乌达拉提议
如果您发现验证器没有得到类型推断或成员完成
不起作用,使用预期类型注释参数可能会有所帮助
解决这些问题
从“Vue”导入Vue,{PropType}
const Component=Vue.extend({
道具:{
汽车:{
要求:正确,
类型:对象作为PropType,
}
}
})
有关更多信息,请从Vue.js查看此项。如果您介意使用Typescript界面,则可以查看此项
在您的情况下,在创建汽车界面后
:
props: {
car: {
required: true,
type: Object as () => Car,
},
},
编辑:
作为@Chin。乌达拉提议
如果您发现验证器没有得到类型推断或成员完成
不起作用,使用预期类型注释参数可能会有所帮助
解决这些问题
从“Vue”导入Vue,{PropType}
const Component=Vue.extend({
道具:{
汽车:{
要求:正确,
类型:对象作为PropType,
}
}
})
有关详细信息,请从Vue.js中查看此项。Hi,我认为您需要在组件中导入index.d.ts
文件。@YashMaheshwari我已经在tsconfig.json
中添加了一个条目,类型检查在不导入的情况下运行良好,我认为您需要导入组件中的index.d.ts
文件。@YashMaheshwari我已经在tsconfig.json
中添加了一个条目,类型检查在不导入的情况下工作得很好,您不应该使用PropType
?如果我这样做,我在编译时不会遇到问题,但在运行时会遇到问题,对于Car
的所有成员,我得到以下错误client.js?06a0:56[Vue warn]:属性或方法“desc”未在实例上定义,而是在渲染期间引用。通过初始化属性,确保此属性在数据选项中或对于基于类的组件是被动的。见:https://vuejs.org/v2/guide/reactivity.html#Declaring-反应性质。在
中可以找到,您可能需要像@Chin.Udara建议的那样对道具进行注释。vue js关于typescript支持的文档,这可能有助于解决您的问题。我编辑了我的答案以供参考。与PropType
一样,在运行时也会遇到问题。如果不使用PropType
,我在编译时不会遇到问题,但在运行时会遇到问题,对于Car
的所有成员,我得到以下错误client.js?06a0:56[Vue warn]:属性或方法“desc”未在实例上定义,而是在渲染期间引用。通过初始化属性,确保此属性在数据选项中或对于基于类的组件是被动的。见:https://vuejs.org/v2/guide/reactivity.html#Declaring-反应性质。在
中可以找到,您可能需要像@Chin.Udara建议的那样对道具进行注释。vue js关于typescript支持的文档,这可能有助于解决您的问题。我编辑了我的答案以供参考。与PropType
一样,在运行时获取问题
import Vue, { PropType } from 'vue'
const Component = Vue.extend({
props: {
car: {
required: true,
type: Object as PropType<Car>,
}
}
})