TypeScript타입
TS2345 인자 타입 불일치 — Argument of type is not assignable
TS2345: Argument of type 'X' is not assignable to parameter of type 'Y'
한 줄 해결: 전달한 값의 타입이 함수가 기대하는 타입과 달라 발생하며, 타입을 좁히거나 정의를 맞추는 것이 정석입니다(as 단언은 최후수단).
이런 증상일 때
함수 호출·prop 전달 지점에 TS2345 가 뜨며 어떤 타입이 어떤 타입에 안 맞는지 보여줍니다. null 가능성, 유니온 타입, 선택적 속성에서 자주 납니다.
원인
- 기대 타입은 string 인데 string | null 또는 undefined 가능성 있는 값 전달
- 유니온 타입을 좁히지 않고 그대로 전달
- 객체 리터럴의 속성 누락 또는 추가 속성
해결 방법
1
타입 가드로 좁히기
null/undefined 를 if 로 걸러 타입을 좁힌 뒤 전달합니다.
if (value != null) fn(value)2
타입 정의 수정
실제로 null 이 들어올 수 있으면 함수 시그니처를 string | null 로 정확히 고칩니다. 거짓 단언보다 안전합니다.
3
as 단언 (최후수단)
런타임에 확실히 안전할 때만 as 로 단언합니다. 단언은 컴파일러를 속이는 것이라 남용 금지.
fn(value as string)💡 예방: strictNullChecks 를 켜고 값의 null 가능성을 타입에 정직하게 반영하면 이런 충돌을 설계 단계에서 잡습니다.
TypeScriptTS2345타입strictNullChecksas