繁体   English   中英

如何在 TypeScript 中映射多种类型的数组?

[英]How to map over array of multiple types in TypeScript?

如果我有一个变量,它的类型是一个可以采用多种类型的数组……

type myData = (RedType | BlueType)[];
//`const data` is of type myData

我正在对类型进行手动检查,并有条件地对变量数据执行一些逻辑......

     {data.map((element, index) => {
        if (isRed(element)) {
          return <Red data={element} key={index} />;
        } else {
          return <Blue data={element} key={index} />;
        }
      })}

如您所见,我正在映射数组,如果它是 RedType,则返回一个 Component,并为 BlueType 返回其他内容。

但是,打字稿不喜欢这样,它不知道我正在手动执行条件。 所以它错误:

type ‘RedType | BlueType’ is not assignable to type ‘RedType’.  

反之亦然。

我将始终拥有多个类型的数组,我无法更改。

您可能希望您的isRed()函数是用户定义的类型保护 也就是说,将其签名更改为类似

declare function isRed(x: any): x is RedType;

并且您的代码应该开始编译而不会出错。 希望有所帮助; 祝你好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM