我在我的React.cloneElement第一个参数"childred“上的反应代码中有一个类型记录错误,我不明白。
我认为在index.d.ts for cloneElement中定义的类型不适用于这种情况,但是我对类型记录非常陌生,我如何才能修复它呢?index.d.ts中的"P“、"T”代表什么?
MessageType.tsx:
class MessageType extends React.Component<any, any> {
[.....]
const { children, noFloating } = this.props ;
[.....]
{messageType
? React.cloneElement(children, {
...(noFloating ? {} : { floatingMessage }),
messageType,
message: `Example ${messageType} message`,
})
: children}
在上面这段代码中,“子”是红色的。
错误:
No overload matches this call.
The last overload gave the following error.
Argument of type 'ReactNode' is not assignable to parameter of type 'FunctionComponentElement<P>'.
Type 'undefined' is not assignable to type 'FunctionComponentElement<P>'.ts(2769)
index.d.ts(328, 14): The last overload is declared here.
index.d.ts:
/ Custom components
function cloneElement<P>(
element: FunctionComponentElement<P>,
props?: Partial<P> & Attributes,
...children: ReactNode[]): FunctionComponentElement<P>;
function cloneElement<P, T extends Component<P, ComponentState>>(
element: CElement<P, T>,
props?: Partial<P> & ClassAttributes<T>,
...children: ReactNode[]): CElement<P, T>;
function cloneElement<P>(
element: ReactElement<P>,
props?: Partial<P> & Attributes,
...children: ReactNode[]): ReactElement<P>;
发布于 2022-07-20 13:53:36
已解决的声明:
children as React.ReactElement<any>
但我认为有一个更正确的解决方案
https://stackoverflow.com/questions/73049515
复制相似问题