我发现function f<T extends { limit: number, page: number }>(
t: T,
x: Omit<T, "page"> & { page: number; }
): Omit<T, "page"> & { page: number; } {
return x;
}
const okayPage100 = f(page7, { limit: 456, page: 100 });
console.log(okayPage100.page); // number at compile time, 100 at runtime, okay
function g<T extends { limit: number, page: number }>(
t: T,
x: Omit<T, "page"> & Pick<T, "page">
): Omit<T, "page"> & Pick<T, "page"> {
return x;
}
const ret: PageSeven = g(page7, page7); // still okay
在某些情况下可以代替INDEX()
。
我想知道这是ARRAYFORMULA()
的受支持函数还是一个错误,因为我找不到以这种方式工作的INDEX
函数的任何文档。
例如,这两个公式给出的结果相同。
INDEX
但是,如果没有=INDEX(ArrayFormula(SPLIT (I2:I75," ")),,1)
=INDEX(SPLIT (I2:I75," "),,1)
,INDEX
仅给出一个结果,而不是数组。
以相同的方式,可以使用SPLIT(I2:I75," ")
代替INDEX
和ARRAYFORMULA
。
[G1]单元格是使用常规VLOOKUP
计算的。
答案 0 :(得分:1)
INDEX
(与ARRAY_CONSTRAIN
或FILTER
相同)是ARRAYFORMULA
的“类型”,它定义了对输出数组的限制。
但是,与ARRAY_CONSTRAIN
不同,在INDEX
公式中可以部分或完全省略这些限制。例子:
=INDEX(A:B)
=INDEX(A:B,,)
=INDEX(A:B,,1)
=INDEX(A:B, 10, 2)
=INDEX(A:B, 10, )
SPLIT
函数能够自行返回结果数组。例如:
=SPLIT(A2, ",")
,但是当按范围而不是单单元格引用进行馈送时,它需要帮助才能在所有行上推出。例如:
=ARRAYFORMULA(SPLIT(A2:A20, ","))
以上是最常见的,但是如果您更喜欢替代方法,则可以使用:
=INDEX(SPLIT(A2:A20, ","))
=ARRAY_CONSTRAIN(SPLIT(A2:A20, ","), 9^9, 1)
=FILTER(SPLIT(A2:A20, "I"), A2:A20<>"♪")