【发布时间】:2016-01-26 13:16:45
【问题描述】:
我正在用这个 API 编写一个库:
export var reduce = <T, U>(
tArray: T[],
tReducer: (current: U, tItem: T, index: number, tArray: T[]) => U,
options: IChunkifyOptions = DEFAULT_OPTIONS,
memo?: U
): Promise<U>
该实现与标准 JavaScript reduce 一样,如果未提供 memo,则使用 tArray 的第一项作为 memo。
if (memo === undefined) {
memo = tArray[0]; // Type 'T' is not assignable to Type 'U'
}
Casting (<U>) 合理地给出了Neither Type 'T' nor Type 'U' is assignable to the other.
定义 API 的合理方式是什么?
【问题讨论】:
-
已回复here。先投到
<any>! -
谨慎使用
<any>转换。覆盖 TypeScript 的类型安全可能会导致许多无法预料的问题。我只在我的团队的测试模拟和存根中允许这样做,这是有充分理由的。在诉诸<any>演员之前,请花点时间考虑以下答案。
标签: typescript typescript-generics