Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 为Vue道具创建类型的正确方法是什么_Typescript_Vue.js_Nuxt.js_Typescript Typings_Vue Props - Fatal编程技术网

Typescript 为Vue道具创建类型的正确方法是什么

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

我试图在Vue js中为我的道具创建一个自定义的
类型
,我创建了一个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>,
    }
  }
})