๋ฌธ์ ์ํฉ
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