어느날 컴퓨터를 켜고 VSCODE에서 yarn run dev
로 데브서버를 구동했는데, 이런 오류가 나왔다.
파일을 건든적은 없다. 왜 그럴까? 한번 찾아보았다!
파워쉘 관리자 권한 실행 후
net stop winnat
으로 winnat
을 종료시킨뒤 net start winnat
로 다시실행.
5173포트가 예약되어있어서 그렇다.
보통 윈도우 업데이트때문인 경우가 많음!
서버와 데이터를 웹소켓으로 주고 받는 상황.
첫 응답시에 quetions
프로퍼티가 들어오고 이후에는 들어오지 않는다.
이때 quetions
는 옵셔널 타입이 된다.
첫 응답시에 들어온 quetions
를 useRef
를 이용하여 저장하기로 함.
그리고 응답이 있을때만 컴포넌트를 렌더링 하기에 첫 렌더링시 quetions
는 무조건 존재한다.
하지만, TS컴파일러는 이를 모름.
이때 어떻게 할까 방법을 찾아보다 Non-nullalbe이라는 타입을 찾았다.
undefined
나null
이 아닌 값으로 취급한다.
const GameSentence = ({
ingameRoomRes,
publishIngame,
userId,
}: GameSentenceProps) => {
const sentencList = useRef<I_Question[]>(ingameRoomRes.questions!);
....
}
사용법은 위와 같다. null, undefined
가 아닌게 확실 한 값 뒤에 느낌표(!)를 붙임.
as
키워드와 비슷하게 컴파일러에게 개발자가 명시적으로알려주는 것이라 안전하진 않은 것 같다.