元组元素的打字稿类型预测

Typescript type predictate for element of tuple

我有一个类型为 Array<[string, unknown]> 的数组。我想通过 .type 属性.

的元组的第二个元素是否过滤这个数组

我无法计算出在应用过滤器后将正确给出正确类型的输出数组的类型预测。

我试过这个:

const isSchemaProp = (entry: unknown): entry is [string, { type: string }] => {
  const [, value] = entry as [string, { type: sting }];
  return value.type !== undefined;
};
const newArr = arr.filter(entry => isSchemaProp(entry)) // Second element of each element is still unknown

filter 的回调函数参数必须是具有类型谓词的函数,以便 filter 的 return 类型被改变。从回调内部调用类型断言是不够的。

const newArr = arr.filter(
  (entry): entry is [string, { type: string }] => {
    return isSchemaProp(entry)
  }
)

或者,既然type predicate有这个特性就好了,直接传进去就可以了:

const newArr = arr.filter(isSchemaProp)

Playground