๐Ÿ‘ฉ‍๐Ÿ’ป/Vue

[Vue.js/TypeScript] Property "$anime" does not exist on type "Header"

ํ•œ๋‚˜ 2021. 1. 26. 20:27

 

 

๋ฌธ์ œ ์ƒํ™ฉ

SVG ์• ๋‹ˆ๋ฉ”์ด์…˜ ์—ฐ์Šต์„ ์œ„ํ•ด์„œ TypeScript๋ฅผ ์ ์šฉ ์ค‘์ธ Vue.js์— anime.js๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•˜๋‹ค. ์•„๋ž˜์ฒ˜๋Ÿผ ๋‹ฌ ๋ชจ์–‘ SVG ๊ทธ๋ž˜ํ”ฝ์„ ์ด์šฉํ•ด ํด๋ฆญ ์‹œ ๊ฐ€๋ฒผ์šด ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ณผ์ •์—์„œ ์ž๊พธ ์•„๋ž˜ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋‚ฌ๋‹ค.

 

Property '$anime' does not exist on type 'CombinedVueInstance<Vue, AppState, { toggleMode() Property '$anime' does not exist on type 'CombinedVueInstance<Vue, AppState, { toggleMode(): void; }, unknown, Readonly<Record<never, any>>>'.

ํ•ด๊ฒฐ ๊ณผ์ •

์šฐ์„  anime.js๋Š” Vue.use()๋กœ ๋“ฑ๋ก์„ ํ•ด๋‘๊ธฐ ์œ„ํ•ด ํ”Œ๋Ÿฌ๊ทธ์ธํ™” ํ•ด์„œ ๋“ฑ๋ก์„ ํ•ด๋‘” ์ƒํƒœ์˜€๋‹ค.

 

// src/plugins/anime.ts ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ , 

declare module "animejs/lib/anime.es.js"; // module์„ ์„ ์–ธํ•ด์ฃผ์—ˆ๋‹ค. 


// src/main.ts ์—๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ plugins์˜ anime ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ๋ฐ›์•„์™€ import ํ•ด์ฃผ์—ˆ๋‹ค. 
// file ํ™•์žฅ์ž์ธ ts๋Š” ๋นผ์ค€๋‹ค. 

import Vue from "vue";
import App from "./App.vue";
// ...

import VueAnime from "./plugins/anime";
Vue.use(VueAnime); 

 

์ด๋•Œ ๊ฒฝ๋กœ ๋ถ€๋ถ„์— ๊ณ„์† ๋นจ๊ฐ„ ๋ฐ‘์ค„๋กœ ์—๋Ÿฌ๊ฐ€ ๋œจ๊ธธ๋ž˜, vscode ์—๋Ÿฌ์ธ์ง€ ts ์—๋Ÿฌ์ธ์ง€ ํ™•์‹คํ•˜์ง„ ์•Š์•˜์ง€๋งŒ, stackoverflow ์กฐ์–ธ๋Œ€๋กœ ์•„๋ž˜์ฒ˜๋Ÿผ anime.d.ts ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋ชจ๋“ˆ์„ ์„ ์–ธํ•ด์ฃผ์—ˆ๋‹ค. ํŒŒ์ผ๋ช…์€ ๋ฌด๊ด€ํ•˜์ง€๋งŒ, d.ts ํ™•์žฅ์ž๋กœ ์ž‘์„ฑํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

// anime.d.ts

declare module "animejs/lib/anime.es.js";

 

์• ๋‹ˆ๋ฉ”์ด์…˜ ์—ฐ์Šต์„ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์—์„œ ๋ช‡ ๋ฒˆ์€ ๋” ํ•  ๊ฒƒ ๊ฐ™์•„์„œ, ์ „์—ญ์œผ๋กœ ๋“ฑ๋กํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“  plugins ํด๋” ๋‚ด๋ถ€์˜ anime.ts ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

import anime from "animejs/lib/anime.es.js";

const VueAnime = {
  install(Vue: any) {
    Vue.prototype.$anime = anime;
    // app.config.globalProperties.$anime = anime;
    // Vue.prototype.$testData = "testData";
  }
};
export default VueAnime;

 

๋งจ ์ฒ˜์Œ app.config.globalProperties.$anime = anime;๋ฅผ ํ†ตํ•ด์„œ ๋“ฑ๋ก์„ ํ•ด์ฃผ๋ ค๋‹ˆ๊นŒ, ์ž˜ ๋˜์ง€ ์•Š์•„์„œ Vue.prototype.$anime๋กœ ๋“ฑ๋กํ•ด์ฃผ์—ˆ๊ณ , ํ™•์ธ์„ ์œ„ํ•ด string ๋ฌธ์ž์—ด์„ ๋ฐ์ดํ„ฐ๋กœ ๊ฐ–๋Š” $testData ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ด ์ฝ˜์†”์— ์ถœ๋ ฅํ•ด๋ดค๋‹ค.

const VueAnime์˜ install ์ธ์ž์—๋„ ํƒ€์ž…์„ ์ถ”๊ฐ€ํ•ด์ฃผ์—ˆ๋‹ค.

 

๋‹ค๋ฅธ ๊ฑด ๋ชฐ๋ผ๋„ Vue ํ”„๋ ˆ์ž„์›Œํฌ ์ƒ์˜ ์—˜๋ฆฌ๋จผํŠธ๋“ค ํƒ€์ž… ์ง€์ •๊ณผ ๊ด€๋ จํ•ด์„œ ํƒ€์ž… ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ ์šฉํ•˜๋Š” ๊ณผ์ •์ด ์•„์ง ๋ฏธ์ˆ™ํ•ด์„œ ๋งŽ์ด ํ—ค๋งธ๋‹ค ํ‘ํ‘..

 

์•„๋ฌดํŠผ ์ผ๋ จ์˜ ๊ณผ์ •๋“ค์„ ๊ฑฐ์น˜๊ณ  ๋‚˜์„œ๋„, ์•„๋ž˜์ฒ˜๋Ÿผ ์—๋Ÿฌ๋ฉ”์„ธ์ง€๋Š” ์ถœ๋ ฅ์ด ๋˜๋Š”๋ฐ, vscode ์ƒ์—์„œ๋งŒ ๋ณด์ด๋Š” ์—๋Ÿฌ์—ฌ์„œ tsconfig ํŒŒ์ผ์— ๋ช‡ ๊ฐ€์ง€ ์„ค์ •์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๊ดœ์ฐฎ์„ ๊ฒƒ ๊ฐ™๋‹ค.

 

 

์ฐธ๊ณ 

programmer.help/blogs/vue-typescript-defining-global-variables-or-methods.html