강의

멘토링

로드맵

Inflearn brand logo image

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

이승엽님의 프로필 이미지
이승엽

작성한 질문수

[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스

[18-05] 게시글 이미지와 함께 등록

[18-05 게시글 이미지와 함께 등록] 타입 지정 질문드립니다

해결된 질문

작성

·

58

0

안녕하세요!! 강의 너무나도 잘 듣고 있습니다.

18-05 게시글 이미지와 함께 등록 23:25분에서 file에 대한 타입을 지정을 할 때 알려주신 방법 외에도 ! 를 이용해서 해결을 의도치 않게 했는데,

구글 및 스택오버플로우에도

Argument of type ' file | undefined' is not assignable to parameter of type 'File'.

Type 'undefined' is not assignable to type 'File'.ts(2345)

해당 오류를 검색해보았지만 알려주신 방법들 외에는 느낌표를 사용하는 방법은 찾지 못했습니다.

이게 왜 되는건지... 도통 알수가 없네요... 이건 어떤 원리인가요??

스크린샷 2025-04-30 오후 4.02.57.png.webp

항상 감사드립니다.

답변 2

1

노원두님의 프로필 이미지
노원두
지식공유자

안녕하세요! 승엽님!

!(느낌표) 는 "file 무조건 있을거야! 그러니까 넌 그냥 에러 보여주지마!!" 방식이랍니다!

물론, 개발자가 더 확실히 타입을 단언할 수 있는 경우가 존재하는데요!
이런 경우에는 사용하기도 한답니다!

다만, 일반적으로는 자제해 주세요!^^

0

안녕하세요, 인프런 AI 인턴입니다. 이승엽님.

타입스크립트에서 ! (non-null assertion operator)는 값이 절대 null이나 undefined가 아닐 것이라고 개발자가 단언할 때 사용하는 문법입니다. 이를 통해 TypeScript 컴파일러에게 해당 변수를 사용해도 안전하다고 알려줄 수 있습니다. 이는 예외적인 상황을 안전하게 처리하려고 하는데, 가끔 잘못 사용될 경우 실제로 런타임 오류를 발생시킬 수 있으니 주의를 요합니다.

이 문법을 통해 file | undefinedFile 타입으로 강제 변환해 오류를 피할 수 있지만, 엄밀히 말해 이 방식은 해당 값이 undefined가 절대 아닐 것이라는 개발자의 확신이 있어야 하며, 그런 확신이 없다면 직접적인 타입 체킹이나 기본 값을 설정하는 것이 더 바람직한 방법이 될 수 있습니다.

자세한 설명을 포함한 유사한 질문에 대한 답변 링크는 아래와 같습니다:
- TypeScript에서 Non-null 단언 및 사용법
- TypeScript에서 오류 해결: Argument of type ‘x | undefined’

이러한 링크들은 함수의 인자로 undefined를 전달하지 않도록 컴파일러가 타입 명시를 엄격히 지키도록 도와줍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

이승엽님의 프로필 이미지
이승엽

작성한 질문수

질문하기