TechFeedTechFeed
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

관련 에러

관련 가이드

드리즐 ORM, Prisma, 슈퍼베이스 | 1인 개발자가 ORM 고를 때 어디서 갈리나?커서 AI, .cursorrules, 규칙 파일 | 프로젝트에 AI 도구를 붙일 때 어디서 설정하나?MSW, API 모킹, 브라우저 핸들러, Vitest | 컴포넌트 테스트 전에 어떻게 붙이나?Fastify, Hono, Express, API 라우팅 | Node 백엔드 프레임워크는 언제 갈라질까?