具有普通脚本和函数的打字稿的联合类型是否损坏?

时间:2019-01-25 15:22:22

标签: angular typescript

我正在构建一个列表管理器,它使用各种实用程序功能来约束唯一值。但是,包装数组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'.

1 个答案:

答案 0 :(得分:0)

对于那些也被这种方法抛弃的人,答案是相对简单的:

T并不排除是一个函数,因此它可能是一个函数,因此会引发错误:)