translations.ts
TS7053 오류2025-07-01
src/lib/translations.ts
TS7053: Element implicitly has an 'any' type because expression of type 'any' can't be used to index type ...
TRANSLATIONS[language][category][key]
접근 시 TypeScript가 key
의 타입을 유추하지 못해 any
타입 경고 발생.category
는 'errors' | 'ui'
, key
는 ErrorKey | UIKey
로 지정되어 있으나, TypeScript는 category
와 key
가 서로 연관된 타입이라는 것을 알지 못함.category
가 'errors'
일 때만 ErrorKey
를 사용해야 하고, 'ui'
일 때는 UIKey
를 사용해야 함.key
의 타입을 명확히 추론할 수 없었음.key as any
로 인덱싱하는 기존 방식이 TS7053 오류를 유발함.export function t<T extends 'errors' | 'ui'>(
category: T,
key: T extends 'errors' ? ErrorKey : UIKey,
language: Language = 'ko'
): string
category
와 key
의 타입을 조건부로 연결함.'errors'
면 ErrorKey
, 'ui'
면 UIKey
로 key
타입을 자동 제한.const translation = TRANSLATIONS[language]?.[category];
const fallback = TRANSLATIONS.ko[category];
if (category === 'errors') {
return (translation as any)?.[key] || (fallback as any)[key];
} else {
return (translation as any)?.[key] || (fallback as any)[key];
}
translation
과 fallback
을 별도로 분리하여 처리.as any
를 최소화하고, 논리적으로 category
를 나눈 후 타입 강제 적용.작업 | 결과 |
---|---|
npx tsc --noEmit | ✅ TypeScript 오류 없음 |
npm run build | ✅ 빌드 성공 (일부 콘솔 경고 존재하나 문제 없음) |
as any
사용은 최소화하며, 코드 전체의 타입 안정성을 높이는 방향으로 개선함.