๐ต๏ธshims-vue.d.ts ์ด๋?
shims-vue.d.ts ํ์ผ์ TypeScript ํ๋ก์ ํธ์์ Vue ํ์ผ(*.vue)์ ์ฌ์ฉํ ์ ์๋๋ก ๋์์ฃผ๋ ์ ์ธ ํ์ผ์ ๋๋ค. TypeScript๋ ๊ธฐ๋ณธ์ ์ผ๋ก .vue ํ์ผ์ ์ธ์ํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์, ์ด ํ์ผ์ ํตํด TypeScript์๊ฒ .vue ํ์ผ์ ๋ชจ๋์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผ ํ๋์ง ์๋ ค์ค๋๋ค.
/* eslint-disable */
declare module '*.vue' {
import type { DefineComponent } from 'vue'
const component: DefineComponent<{}, {}, any>
export default component
}
vue/cli ๋ก vue3 + typeScript ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ฉด ๋ฃจํธ๋๋ ํ ๋ฆฌ์
shims-vue.d.ts
ํ์ผ์ด ์์ฑ
1๏ธโฃ declare module '*.vue' {
2๏ธโฃ import type { DefineComponent } from 'vue'
3๏ธโฃ const component: DefineComponent<{}, {}, any>
4๏ธโฃ export default component
}
- declare module '*.vue' { ... }:
์ด ๊ตฌ๋ฌธ์ ๋ชจ๋ .vue ํ์ผ์ ๋ชจ๋๋ก ์ ์ธํฉ๋๋ค. TypeScript๋ ๊ธฐ๋ณธ์ ์ผ๋ก .vue ํ์ผ์ ์ธ์ํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์, ์ด ์ ์ธ์ ํตํด .vue ํ์ผ์ ๋ชจ๋๋ก ์ทจ๊ธํ๋๋ก ํฉ๋๋ค.
- import type { DefineComponent } from 'vue':
Vue 3์์ ์ ๊ณตํ๋ DefineComponent ํ์
์ ๊ฐ์ ธ์ต๋๋ค. DefineComponent๋ Vue ์ปดํฌ๋ํธ๋ฅผ ์ ์ํ๋ ํ์
์
๋๋ค.
import type ๊ตฌ๋ฌธ์ ํ์
๋ง ๊ฐ์ ธ์ค๊ฒ ๋ค๋ ์๋ฏธ๋ก, ๋ฐํ์์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
- const component: DefineComponent<{}, {}, any>:
๋ชจ๋ .vue ํ์ผ์ด DefineComponent ํ์
์ ์ปดํฌ๋ํธ์์ ๋ช
์ํฉ๋๋ค.
DefineComponent<{}, {}, any>๋ ์ ๋ค๋ฆญ ํ์
์ผ๋ก, ์ฒซ ๋ฒ์งธ์ ๋ ๋ฒ์งธ ์ธ์๋ ์ปดํฌ๋ํธ์ props์ ์ํ๋ฅผ ๋ํ๋ด๋ฉฐ, ์ฌ๊ธฐ์๋ ๋น ๊ฐ์ฒด๋ก ์ค์ ๋์ด ์์ต๋๋ค. ์ธ ๋ฒ์งธ ์ธ์๋ ์ปดํฌ๋ํธ์ ๋ฉ์๋ ํ์
์ ๋ํ๋ด๋ฉฐ, any๋ก ์ค์ ๋์ด ์์ต๋๋ค.
๊ฐ ์ ๋ค๋ฆญ ์ธ์๋ ์ปดํฌ๋ํธ์ props
, emits
, slots
๋ฑ์ ์ ์ํฉ๋๋ค.
๐ต๏ธ๋ ์๊ฒฉํ ํ์ ๊ฒ์ฌ๋ฅผ ํ๋ ค๋ฉด?
const component: DefineComponent<NonNullable<unknown>, NonNullable<unknown>, any>;
์ฒซ ๋ฒ์งธ ์ธ์: NonNullable<unknown>
NonNullable<unknown>
๋ unknown
ํ์
์์ null
๊ณผ undefined
๋ฅผ ์ ์ธํ ํ์
์ ์๋ฏธํฉ๋๋ค. ์ฆ, ์ด ์ปดํฌ๋ํธ์ props๋ null
์ด๋ undefined
๊ฐ ๋ ์ ์์ต๋๋ค.
๋ ๋ฒ์งธ ์ธ์: NonNullable<unknown>
๋ง์ฐฌ๊ฐ์ง๋ก, setup
ํจ์์ ๋ฐํ๊ฐ๋ null
์ด๋ undefined
๊ฐ ๋ ์ ์์ต๋๋ค.
์ธ ๋ฒ์งธ ์ธ์: any
์ปดํฌ๋ํธ์ ๋ฐ์ดํฐ, ๋ฉ์๋, ์ปดํจํฐ๋ ์์ฑ ๋ฑ์ ํฌํจํ๋ ํ์
์ ์ ์ํ๋ฉฐ, ์ฌ๊ธฐ์๋ any
๋ก ์ค์ ๋์ด ์์ด ์ด๋ค ํ์
์ด๋ ๋ ์ ์์ต๋๋ค.
- export default component:
์ด ์ปดํฌ๋ํธ๋ฅผ ๊ธฐ๋ณธ ๋ด๋ณด๋ด๊ธฐ๋ก ์ค์ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด .vue ํ์ผ์ importํ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ ธ์ค๊ฒ ๋ฉ๋๋ค.