123. Vue 的 props 类型基本实现
困难
本挑战继续自 113. 简单的 Vue 类型,你应该先完成那个挑战,并根据它修改你的代码开始本挑战。
在 简单的 Vue 类型
的基础上,我们现在新增了一个 props
字段在选项中。这个字段是 Vue props
选项的简化版。以下是一些规则。
props
是一个对象,每个字段代表实际注入到 this
中的 props。注入的 props 在所有上下文中都可以访问,包括 data
、computed
和 methods
。
一个 prop 可以通过构造函数或一个包含 type
字段的对象来定义,type
字段包含构造函数。
例如:
props: {
foo: Boolean
}
// 或者
props: {
foo: { type: Boolean }
}
应该推断为 type Props = { foo: boolean }
。
当传入多个构造函数时,类型应该推断为联合类型。
props: {
foo: { type: [Boolean, Number, String] }
}
应该推断为 type Props = { foo: boolean | number | string }
。
当传入一个空对象时,键的类型应该推断为 any
。
对于更具体的情况,可以参考测试用例部分。
在这个挑战中不考虑
required
、default
和数组类型的 props 。