Type 'string | undefined' is not assignable to type 'string'. Type 'undefined' is not assignable to type 'string'.
위 에러는 typescript가 예상하고 있는 특정한 type이 아닌, 다른 type을 넘겨줬을 때 발생하게 된다.
해결 방법으로는 몇 가지가 있는데, 두 가지만 살펴보자.
키워드 as는 어떤 경우가 되었던 간에 값의 type을 강제로 지정하여 typescript에 알려줄 때 사용된다.
만약 우리가 값의 타입이 string만 올 것이라는 걸 아는 상태라면, as string
으로 해당 값이 string이라고 강제로 지정할 수 있다.
ex)
const [nicknameEdit, setNicknameEdit] = useState<string>(
authService?.currentUser?.displayName as string
);
변수를 쓰고 나서, 변수 뒤에 !를 붙이는 방법이 있다.
이 방법은 as를 사용하는 방법과 비슷하다.
typescript 컴파일러는 특정 순간에 변수의 value의 타입을 결정할 수 없을 때가 있는데,
끝에 느낌표를 붙임으로써 Typescript 컴파일러에게 변수는 undefined 또는 null이 될 수 없음을 강제로 알릴 수 있다.
ex)
const day = new Date(item.time! + 9 * 60 * 60 * 1000)