我有一个在很多不同地方使用的函数,因此它的类型非常广泛:
export const stringToArrayFn = (
accessor?:
| Function
| string
| boolean
| Object
| Array<Function | string | boolean | Object>,
defaultAccessor?: Function,
raw?: boolean
)
当我调用它时:
stringToArrayFn(yAccessor)
yAccessor 输入为:
yAccessor?: Array<Function | string> | Function | string
流量投诉Cannot call stringToArrayFn with yAccessor bound to accessor because boolean [1] is incompatible with
string [2] in array element.
我不明白,因为 yAccessor 中的数组是 stringToArrayFn 中定义的数组可能性的有效子集(前者仅允许函数或字符串数组,后者允许函数、字符串、布尔值和对象数组)。
如何处理这种类型的打字?
stringToArrayFn
可以打电话accessor.push(true)
并导致你的Array<Function | string>
包含一个boolean
,这会很糟糕。
Use $ReadOnlyArray
代替Array
在定义中stringToArrayFn
如果它不打算改变提供的数组。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)