coding/ts

Argument of type '{ router: Router; }' is not assignable to parameter of type 'Plugin<[]>'.

사과키라임파이 2024. 8. 1. 01:49

vue ts router를 쓰다가 이 오류를 만남.

 

'{ 라우터: 라우터; 유형의 인수 }'는 'Plugin<[]>' 유형의 매개변수에 할당할 수 없습니다.

 

app.use(router as any);

이거 쓰면 오류는 사라지는데..

왜 사라지느냐?

 

any는 TS의 탈출구문으로 타입 시스템의 제한을 벗어나고 싶을때 any 를 사용할 수 있다.
any를 사용하면 타입의 안정성을 희생하는 대신 코드를 원래 JS에 더욱 가깝게 작성할 수 있다.
any는 어떤 타입이든 다른 타입에 할당할 수 있도록 만드는 '타입 와일드카드'와 같다.

라고 한다.

( 참고 : https://velog.io/@daily_d/TypeScript-%ED%83%80%EC%9E%85-%EC%98%A4%EB%A5%98 )

 

이런 것도 있었는데..

아래는 비슷한 내용..

근데! 우선적으로 Argument of type '{ router: Router; }' is not assignable to parameter of type 의 에러가 뜨는 이유는

 

typescript가 예상하고 있는 특정한 type이 아닌, 다른 type을 넘겨줬을 때 발생하게 된다! 고 한다

(참고 : https://jaylee-log.tistory.com/46 )


해결방법은 아래와 같이 typeof를 활용하여 정확한 javascript의 value type을 확인 하면 해결이 된다.

if (typeof token === 'string'){
validateToken(token);
}
 근데.. 이거 맞나..? 일단은 any로 진행하고 나중에 수정하겠음.

 

글 작성 참고:

https://stackoverflow.com/questions/71221327/vue3-typescript-ts2345-argument-of-type-router-is-not-assignable-to-parame

'coding > ts' 카테고리의 다른 글

[ts]러닝 자바스크립트 책 정리(1)  (0) 2024.08.22
[ts] Record type  (0) 2024.08.21