복붙노트

[REACTJS] 타이프 라이터 일반적인 JSX 인수로 forwardRef 반응 사용

REACTJS

타이프 라이터 일반적인 JSX 인수로 forwardRef 반응 사용

해결법


  1. 1.그래서, 몇 가지 질문을 확대,이 고차 기능에 일반적인 유형의 보존에 대한 질문 정말입니다. forwardRef의 다음 사용은 제대로 (3.0.1)의 유형 체킹이됩니다

    그래서, 몇 가지 질문을 확대,이 고차 기능에 일반적인 유형의 보존에 대한 질문 정말입니다. forwardRef의 다음 사용은 제대로 (3.0.1)의 유형 체킹이됩니다

    const SelectWithRef = forwardRef(<Option extends string>(props: Props<Option>, ref?: Ref<HTMLSelectElement>) =>
      <Select<Option> {...props} forwardedRef={ref} />);
    

    그러나, 일반적인 옵션은 즉시 오히려 일반적인로 남아있는 것보다, 문자열로 해결됩니다. 따라서, 다음의 유형 체킹하지 않습니다

    const onChange: (value: 'one' | 'two') => void = (value) => console.log(value);
    
    <SelectWithRef<'one' | 'two'>
                  ^^^^^^^^^^^^^^^ [ts] Expected 0 type arguments, but got 1
      value="a"
      options={['one', 'two']}
      onChange={onChange}
               ^^^^^^^^^^ [ts] Type 'string' is not assignable to type '"one" | "two"'
    />
    

    관련 문제는이 타이프 라이터 문제 티켓에 추적됩니다.

  2. from https://stackoverflow.com/questions/51884498/using-react-forwardref-with-typescript-generic-jsx-arguments by cc-by-sa and MIT license