【发布时间】:2022-08-09 03:30:46
【问题描述】:
我有一个带有键值对的类型,其中键是 React 组件名称,值是它们作为道具的值。我要做的是键入一个包含类型字段的类型数组,这也是组件的确切名称,以及使用组件值类型的getter 和setter 函数。
type ElementValues = {
text: string,
checkbox: boolean
}
type ElementType = keyof ElementValues
type Value<Type extends ElementType> = ElementValues[Type]
type Test = {
[Type in ElementType]: {
type: Type
getter: () => Value<Type>
setter: (value: Value<Type>) => any
}}[ElementType]
const testList: Array<Test> = [{
type: \'checkbox\',
getter: () => \'test,
setter: (value) => ({ })
}]
我能得到的是包含不关心给定组件名称并将所有可能的组件值类型作为 setter 和 getter 参数/返回类型的元素的数组。
在上面的例子中,getter 应该需要boolean,就像复选框值一样,setter 的值类型应该是boolean,而不是boolean | string。
标签: typescript generics type-inference