인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

J.M. Lee님의 프로필 이미지

작성한 질문수

웹 게임을 만들며 배우는 React에 TypeScript 적용하기

이벤트 핸들러, useRef 타이핑

18버전에서의 ReactDOM.render

작성

·

597

1

18버전에서 컴파일은 정상적으로 되었으나 ReactDOM.render 지원이 안되다는 에러가 나옵니다.

그래서 아래처럼 변경 했는데, 이부분도 다뤄주시면 좋겠습니다.

import * as ReactDOM from 'react-dom/client';
const root = ReactDOM.createRoot(document.getElementById('root')!);

root.render(
    <React.StrictMode>
      <GuGuDan />
    </React.StrictMode>
  );

그리고 document.getElementById('root') 라고만 하면 아래 에러가 납니다.

뒤에 명적으로 정의"!" 하니 에러가 안납니다.

왜 그런건지 궁금합니다.

'HTMLElement | null' 형식의 인수는 'Element | DocumentFragment' 형식의 매개 변수에 할당될 수 없습니다.
'null' 형식은 'Element | DocumentFragment' 형식에 할당할 수 없습니다.ts(2345)

 

 

 

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

ts는 dom을 몰라서 분명히 존재하는 태그도 null일 가능성을 염두에 두고 있습니다. 이럴때는 어쩔 수 없이 non null assertion을 해야 합니다.

J.M. Lee님의 프로필 이미지

작성한 질문수

질문하기