我正在构建一个列表管理器,它使用各种实用程序功能来约束唯一值。但是,包装数组find和findIndex方法似乎会中断,并在输出中查找,打字稿会误解。
这是我正在构建的angular 7库的一部分,在网络上的搜索尝试没有被证明是有用的,因为没有一个花费超过我非常具体的发现。
export abstract class ListManagerAbstract<T> {
find(findStrategy?: T | ((item: T, index: number, obj: T[]) => boolean)) {
if (typeof findStrategy === 'function') {
return this.list.find(findStrategy);
}
return this.list.find((value: T) => value === findStrategy);
}
}
我希望这很明显。
以下错误状态表明类型 'T&Function'不能分配给该类型 ,因此他似乎认为类型既是泛型T又是Function( (因为他同时标记了两者)。我会误解输出吗?这坏了吗?这是怎么回事?
Type 'T & Function' is not assignable to type '(value: T, index: number, obj: T[]) => boolean'.
Type 'Function' provides no match for the signature '(value: T, index: number, obj: T[]): boolean'.
答案 0 :(得分:0)
对于那些也被这种方法抛弃的人,答案是相对简单的:
T并不排除是一个函数,因此它可能是一个函数,因此会引发错误:)