• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    미해결

typescript기반 에서는 this.$router가 인식이 안되는데 다른 방법이 있을까요?

22.07.30 13:57 작성 조회수 509

1

현재 타입스크립트 기반의 nuxt.js 프로젝트 생성해서 강의 수강하고 있습니다. <script lang="ts"></script>

라우팅 부분에서  this.$router.push(`detail/${id}`);이 부분이 계속 인식이 안되고 있어서 아래로도 바꿔서 해보고 구글링 해보는데 먹히질 않네요.

this.$nuxt.$router.push(`detail/${id}`);

 

혹시 타입스크립트 기반에서는 접근 방법이 다른가요?

 

답변 2

·

답변을 작성해보세요.

1

best님의 프로필

best

질문자

2022.07.30

자답입니다. 이것저것 수정하다보니 해결되었네요. 타입스크립트 기반일 경우 프로젝트 루트에 

 

vue-shim.d.ts파일을 추가하고 하단 부분을 넣어야 됩니다. 

 

...

/*
Vue파일의 <script></script>태그내에서 this.$router 사용가능하게 처리
*/
declare module 'vue/types/vue' {
interface Vue {
$router: VueRouter
}
}

...

 

그리고 나서 해당  ts파일을 읽어들일수 있게 tsconfig.json 하단에 아래을 추가하면 컴포넌트 내에서 this.$router 부분이 인식이 됩니다. 

{

...

"files": ["./vue-shim.d.ts"]

....

}

 

타입스크립트 기반으로 Nuxt.js개발하시는 분들에게 도움이 되시길 바랍니다. 

0

안녕하세요, Nuxt로 프로젝트 생성하실 때 TypeScript를 선택해서 생성하시면 store, router와 같은 공식 라이브러리 타입 환경은 모두 설정되어 있을 거예요. JS 기반 프로젝트 생성하시고 직접 타입스크립트 관련 패키지를 하나씩 추가하셨을까요?

best님의 프로필

best

질문자

2022.07.31

안녕하세요! 프로젝트 생성시에 아예 처음부터 TypeScript기반으로 생성했습니다. 타입스크립트 기반 Nuxt 프로젝트에서 강의 수강하면서 샘플 따라가면서 해보고 있는데 아직 큰 이슈는 없었습니다. 시간적 여유가 되신다면 Typescript 기반 프로젝트에서 특별히 보완해야되거나 수정해야 되는 부분도 한번 부록으로 넣어주시면 다른 수강자분들에게도 꽤 도움이 될것 같습니다! 

채널톡 아이콘