写类型防护,将类型T缩小为Array <K>

时间:2019-12-16 22:25:39

标签: typescript typescript-generics

我有一个javascript函数,用于检查是否有输入值是Array:

function isArray<T, K>(value: T): value is Array<K> {
    return Array.isArray(value);
}

我该如何正确地将其转换为Typescript通用类型保护,以便它可以接受任何值并返回一些Array?

最后,我希望Typescript理解以下代码:

...
if (isArray(style)) {
  // here Typescript understands style is Array<TextStyle>
  for (const textStyle of style) {
    if (hasDefinedProperty(textStyle, "lineHeight")) lineHeight = textStyle.lineHeight;
    if (hasDefinedProperty(textStyle, "fontSize")) fontSize = textStyle.fontSize;
  }
  if (typeof lineHeight !== 'undefined') style.push({ lineHeight })
}

0 个答案:

没有答案