我一直在try 为基于流的系统开发类型,其中流中 node 的输出必须进入另一个 node 的"正确"输入.每个 node 都被实现为FlowNode<Inputs extends any[], Output extends any>
.
要使其有效类型化,每个流 node 只能输出到以下类型的链接:
type ValidLink = [FlowNode<OtherInputs, any>, I]
// where
// I extends number
// OtherInputs[I] extends Output
可以将这个问题简化为实现泛型类型的问题:
type ValidlyIndexed<X> = [Tuple, I]
// where
// Tuple extends any[]
// I extends number
// Tuple[I] extends X
例如,以下所有内容都应该是有效的Typescript :
[[boolean, number], 0 ] extends ValidlyIndexed<boolean>
[[number, boolean, number, string], 0 | 2 ] extends ValidlyIndexed<number>
[['a' | 'b', string, 'b', 'c'], 0 | 1 | 2] extends ValidlyIndexed<'b'>
如何在Typescript 中实现ValidlyIndexed<X>
?
如果它有任何帮助,那么解决方案here非常接近,但我不确定如何表示所有元组类型的联合.
如果这个问题有任何模棱两可的地方,请随时发表 comments ,我会尽我所能澄清这些问题.