我正在尝试type
在 Vue js 中为我的道具创建自定义,我创建了一个类型文件夹并将其添加tsconfig.typeRoots
到 IntelliSense 中,所有其他事情都正常工作,编译时没有问题,但是当我访问该组件时,我得到一个错误,Car is not defined
但我已经定义了它并且它可以在其他地方工作,但是在检查官方文档后我知道 prop 需要 aconstructor
所以我重新定义了类型declare class Car
并添加了一个构造函数原型,但同样的问题。
这是文件:汽车组件
<script lang="ts">
import Vue from "vue";
export default Vue.extend({
name: "the-car",
props: {
car: {
required: true,
type: Car,
},
},
});
</script>
该types/common/index.d.ts
声明文件
declare class Car {
name: String;
image: String;
kms: Number;
gears: String;
desc: String;
fuel: String;
engine: String;
price: Number;
constructor(name: String, image: String, kms: Number, gears: String, desc: String, fuel: String, engine: String, price: Number);
}
如果您介意使用 Typescript 接口,那么您可以查看这篇文章。
在您的情况下,在创建后Car Interface
:
props: {
car: {
required: true,
type: Object as () => Car,
},
},
编辑:
作为@Chin。乌达拉提议。
如果您发现验证器未获得类型推断或成员补全不起作用,则使用预期类型注释参数可能有助于解决这些问题。
import Vue, { PropType } from 'vue'
const Component = Vue.extend({
props: {
car: {
required: true,
type: Object as PropType<Car>,
}
}
})
查看来自 Vue.js 的这个Typescript 支持文档以获取更多信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句