如何修复错误类型 Item[] | undefined 不能使用 react 和 typescript 分配给 Item[] 类型?

萨丽莎

我是打字稿的新手,但出现错误

“类型 Item[] | undefined 不能分配给 Item[] 类型”

下面是代码,

function Parent ({Items}: Props) {
    return (
        <Child subItems={Items.subItems}/> //error here
    );
}


function Child({subItems}: Item[]) {
    const sortedSubItems = subItems.sort((a: Item,b: Item) =>    b.createdAt.localeCompare(a.createdAt));

    return ( 
        <>
            {sortedSubItems.map((subItem: Item) => {
                return (
                    <Card key={subItem.id}>
                        <CardHeader>
                            {subItem.name}
                        </CardHeader>
                    </Card>
                );
            })}
        </>
    );
};

这里 subItems 具有如下结构,

const subItems = [
    {
        id: '1',
        title: 'subitem-one',
        status: 'new',
        createdAt: '2020-08-13T16:32:10.000Z',
        orders: [
            {
                id: '1',
                title: 'subitem1-order-one',
                status: 'new',
            },
            {
                id: '2',
                title: 'subitem1-order-two',
                status: 'new',
            },
        ]
    },

    {
        id: '2',
        title: 'subitem-two',
        status: 'new',
        createdAt: '2020-08-16T12:02:06.000Z',
        orders: [
            {
                id: '2',
                title: 'subitem2-order-one',
                status: 'new',
            },
       ],
   },
]

项目类型如下所示,

export interface Item {
    id: string;
    createdAt: string;
    name?: string;
    orders?: Order[];
    subItems?: Item[];
}

有人可以帮助我使用打字稿修复错误并做出反应。谢谢。

克里斯 B。

因为您的subItems属性上有一个可选的类型运算符(问号),这向 Typescript 表明该属性可以是undefined. 您需要subItems为您的 Child 组件键入prop 以反映这一点,并在代码中适当地处理它:

interface ChildProps {
   subItems?: Item[]
}
function Child({subItems}: ChildProps) {
    const sortedSubItems = subItems ? subItems.sort((a: Item,b: Item) =>    b.createdAt.localeCompare(a.createdAt)) : [];

    return ( 
        <>
            {sortedSubItems.map((subItem: Item) => {
                return (
                    <Card key={subItem.id}>
                        <CardHeader>
                            {subItem.name}
                        </CardHeader>
                    </Card>
                );
            })}
        </>
    );
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Typescript错误类型'ArrayBuffer'无法分配给类型'Item []'

'Promise <Item |类型的参数 undefined> []'不可分配给'SetStateAction <Item []>'类型的参数

Person 类型的 TypeScript 错误 (TS2345) 参数 | undefined 不能分配给 Person 类型的参数

Typescript-如何解决“类型'undefined'不能分配给类型'XXXX'”的问题?

如何使用react和typescript修复boolean或undefined类型的错误参数?

即使在 .filter 函数删除 undefined 之后,Typescript 类型 (string | undefined ) 也不能分配给类型 string[]

React Native / Typescript / Eslint错误:类型“ void”不能分配给类型“ CompositeAnimation”

TypeScript React事件处理程序错误;类型不能分配给类型(联合)

角6-Rxjs 6-类型Observable <Object>不能分配给类型Observable <Item>

TypeScript错误:类型'()=>布尔'不能分配给类型'布尔'

TypeScript 错误:类型 'string' 不能分配给类型 'number | ""'

Angular TypeScript:“类型 '(string | undefined)[]' 不能分配给类型 'string[]'。”

类型'false'不能分配给类型'(((status:number)=> boolean)| undefined'TypeScript

Typescript类型的React类型参数不能分配给类型参数

React + Typescript高阶函数“无法分配给类型”错误

Typescript React / Redux:类型'typeof MyClass'的参数不能分配给'ComponentType <...'类型的参数

React Typescript-类型的参数不能分配给类型的参数

React Typescript:类型'{[x:number]的参数:任意;}'不能分配给类型的参数

类型 'void' 不能分配给类型 '((event: ChangeEvent<HTMLInputElement>) => void) React TypeScript

“数字”类型的参数不能分配给“字符串”类型的参数 - Typescript 和 Angular

类型标头不能分配给TypeScript和Angular 9中的类型HttpHeaders

类型 'undefined' 不能分配给类型 '(number | null)[]'

类型'undefined'不能分配给'never'类型

如何配置TypeScript来避免:类型'string'不能分配给类型'“ desc” | “ asc” | undefined'.ts(2322)?

TypeScript:“any”类型不能分配给“never”类型

Angular2和TypeScript:错误TS2322:类型“ Response”不能分配给类型“ UserStatus”

在TypeScript中将类型分配给React SFC函数声明

Typescript(类型'undefined'不能分配给类型)为什么我的数组有一个|号?未定义?

如何一次定义类型并将其分配给React TypeScript中的函数和组件?