-
[Trouble Shooting] Unexpected any. Specify a different type. eslint (feat: no-explicit-any 에러)Trouble Shootings/Typescript 2024. 4. 29. 10:24
⚠️ 이슈 내용
Typescript기반의 프로젝트를 설정할 때, any 타입으로 인한 에러 이슈로 작업이 어려움이 있었다. 이에 이러한 에러가 발생했다.
Unexpected any. Specify a different type. eslint
📌 이슈 원인
현재의 Typescript기반의 프로젝트에서 eslint를 어떻게 규정하느냐에 따라 any를 접하게 되었을 경우, Error 메시지를 띄우도록 하였기 때문이다. 이러한 이유를 Typescript-eslint에서 찾을 수 있었다.
no-explicit-any | typescript-eslint
Disallow the `any` type.
typescript-eslint.io
아래의 그림에서 보듯이 Typescript에서 any타입을 쓰는 것은 굉장히 무책임할 수 있다.
no-explicit-any any 타입을 사용시에, escape hatch라고 되어 있다. 이경우 typesciprt를 compiler하는 과정에서 실제로 밖으로 나가게 되는 것을 의미한다. 다시 말해, compile을 하지 않고 나가게 되면서 실제로 Typescript를 쓰는 것이 의미가 없어지기 때문이다.
하지만, Typescript를 쓰다보면 알겠지만, 무조건 다 타입을 지정하기 어려운 순간들이 올 수 있다. 어쩔수없이 any를 써야하는 경우는 반드시 생기기 마련이다.
그런 상황의 대안책으로 Typescript-eslint에서는 두 가지 방식을 제안하고 있다. 먼저, 가장 중요한 것은 interface 또는 type을 통해 타입을 명시하는 것. 만약 타입이 애매(?) 하다면, any 타입 대신 unkwon을 사용할 것.
위 방법을 사용해야 --noImpicitAny의 옵션을 거스르지 않게 될 수 있다.
✅ 해결 방법
Eslint's Config 사실 해결 방법은 매우 간단하다. @typescript-eslint/no-explicit-any , 옵션 설정을 바꿔주기만 하면 된다.
// 전 { ...생략 rules: { ... 생략 "@typescript-eslint/no-explicit-any": "error", ... 생략 }, } // 후 { ...생략 rules: { ... 생략 "@typescript-eslint/no-explicit-any": "off" ... 생략 }, }