2017-10-09 77 views
6

16个数组元素我想使用新的反应16功能回到我render数组元素,但我得到的打字稿错误Property 'type' is missing in type 'Element[]'返回反应在打字稿

const Elements: StatelessComponent<{}> =() => ([ 
    <div key="a"></div>, 
    <div key="b"></div> 
]); 

我失去了什么?使用@类型/反应16.0.10打字稿2.5.3

+2

它仍然是一个新鲜的版本,类型不完全准备好。在这里你有一个链接,你可以按照进度:https://github.com/DefinitelyTyped/DefinitelyTyped/pull/19363(他们几天前合并它,但人们仍然有问题) – niba

+0

感谢您的链接! –

回答

5

我查了最新的分型和他们忘了在一个无状态的组件接口添加新的定义。我提出了这个问题,应该尽快解决。

从类组件返回一个数组是可行的,所以如果你现在真的需要它,你可以将你的功能组件转换为类组件。

class Elements extends React.Component<{}> { 

    render() { 
    return [ 
     <div key="a"></div>, 
     <div key="b"></div> 
    ] 

    } 
} 

或使用模块增加暂时扩展React类型。只需将以下代码放置在某个.ts文件中,打字稿将自动检测定义中的更改。

declare module "react" { 
    interface StatelessComponent<P = {}> { 
    (props: P & { children?: ReactNode }, context?: any): ReactElement<any>[] | ReactElement<any> | null; 
    propTypes?: ValidationMap<P>; 
    contextTypes?: ValidationMap<any>; 
    defaultProps?: Partial<P>; 
    displayName?: string; 
    } 
} 
+0

嗨!有问题的链接吗?仍然不固定= \谢谢。想要碰撞一下 –

+0

这是关于这个问题的最新讨论,我可以找到:https://github.com/DefinitelyTyped/DefinitelyTyped/issues/20356 – mbh

+0

在Typescript回购中有一个PR正在等待合并。 https://github.com/Microsoft/TypeScript/pull/20239 – niba