如何正确定义样式组件的引用?
我编写了以下测试代码。与先前的代码(如何为样式化组件(对于TypeScript)正确定义引用(React.RefObject))不同,这是一种精炼的代码。添加了引用类型StyledComponentClass< {}, any>。
StyledComponentClass< {}, any>
import React, {Component, RefObject, ReactNode} from 'react'; import styled, {StyledComponentClass} from 'styled-components'; type TModalShadowContainer = StyledComponentClass<{}, any>; const ModalShadowContainer: TModalShadowContainer = styled.div` background-color: black; `; export default class Modal extends Component { private readonly modalRef: RefObject<TModalShadowContainer>; constructor(props: {}) { super(props); this.modalRef = React.createRef<TModalShadowContainer>(); } public render(): ReactNode { return ( <ModalShadowContainer ref={this.modalRef}> {this.props.children} </ModalShadowContainer> ); } }
错误出现在行上:
<ModalShadowContainer ref={this.modalRef}>
错误文字:
Type 'RefObject<StyledComponentClass<{}, {}, {}>>' is not assignable to type 'string | ((instance: Component<{ as?: string | ComponentClass<any, any> | StatelessComponent<any> | undefined; theme?: {} | undefined; }, any, any> | null) => any) | RefObject<Component<{ ...; }, any, any>> | undefined'. Type 'RefObject<StyledComponentClass<{}, {}, {}>>' is not assignable to type 'RefObject<Component<{ as?: string | ComponentClass<any, any> | StatelessComponent<any> | undefined; theme?: {} | undefined; }, any, any>>'. Type 'StyledComponentClass<{}, {}, {}>' is not assignable to type 'Component<{ as?: string | ComponentClass<any, any> | StatelessComponent<any> | undefined; theme?: {} | undefined; }, any, any>'. Property 'setState' is missing in type 'StyledComponentClass<{}, {}, {}>'.
如何在TypeScript lang中描述(定义)引用?
也许这会有所帮助。
type MamkinHackerType<T> = T extends StyledComponentClass<React.DetailedHTMLProps<React.HTMLAttributes<infer ElementType>, infer ElementType>, infer T, infer H> ? ElementType & React.Component<React.DetailedHTMLProps<React.HTMLAttributes<ElementType>, ElementType> & T & H> : never ; private readonly modalRef = React.createRef<MamkinHackerType<typeof ModalShadowContainer>>();