kry*_*ton 7 typescript vue.js typescript-typings nuxt.js vue-props
我正在尝试type在 Vue js 中为我的 prop 创建自定义,我创建了一个 types 文件夹并将其添加到tsconfig.typeRootsIntelliSense 中,所有其他内容都正常工作,编译时没有问题,但是当我访问该组件时,我收到一个错误,Car is not defined但我已经定义了它并且它可以在其他地方工作,但在检查官方文档后,我知道 prop 需要 a constructor 所以我重新定义了类型declare class Car并添加了构造函数原型,但又出现了同样的问题。
以下是文件: 汽车组件
<script lang="ts">
import Vue from "vue";
export default Vue.extend({
name: "the-car",
props: {
car: {
required: true,
type: Car,
},
},
});
</script>
Run Code Online (Sandbox Code Playgroud)
声明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);
}
Run Code Online (Sandbox Code Playgroud)
Oli*_*ape 30
诸如type: Car或 之类的类型声明type: Object as Car将不起作用,因为在 Vue 中,它提供了附加功能,例如 prop 验证,这超出了您在 Typescript 中获得的标准类型检查。
虽然type: Object as () => Car可行,但处理此问题的正确方法是使用 Vue 的辅助方法PropType。
import { PropType } from 'vue'
props: {
car: {
type: Object as PropType<Car>,
required: true,
},
},
Run Code Online (Sandbox Code Playgroud)
检查Vue.js 中的Typescript 支持文档 (v2) ( v3 ),了解有关注释 props 的更多信息。
| 归档时间: |
|
| 查看次数: |
14954 次 |
| 最近记录: |