이슈
Emit에 타입을 지정하고 싶은데 막상 쪼갠 ts파일에서 하려니 쉽지 않았다. 아래는 공식문서에 있는 emit 타입지정에 관한 내용이다.
출처: https://v3.vuejs.org/api/sfc-script-setup.html#typescript-only-features
해결
vue파일
import fbDepthCategoryComposable, { Emits } from '@/composables/modules/fb-depth-category'
const emit = defineEmits<Emits>();
const {
categories,
defaultLabel,
handleUpdateCategory,
} = fbDepthCategoryComposable(emit);
ts파일
import { SelectedDepth } from '@/composables/modules/fb-depth-select';
interface Emits {
(e: 'update:categoryData', value: SelectedDepth): void;
}
export default function fbDepthCategoryComposable(emit: Emits) {
const categoriesService = new CategoriesService();
//default label
const defaultLabel: SelectBoxRow[][] = [
[{ name: '대분류', value: '' }],
[{ name: '중분류', value: '' }],
[{ name: '소분류', value: '' }],
[{ name: '세분류', value: '' }]
];
}
export {
Emits,
}
ts 파일에서 타입을 지정한 interface를 만들어 놓고 그걸 export 해서 defineEmit 할때 쓰는 방식으로 해결했다.
반응형
'Typescript' 카테고리의 다른 글
[typescript] 같은 interface인데 이름만 다르게 쓰고 싶을때 ! 인터페이스 복사하기 (type이용하기) (0) | 2022.02.04 |
---|---|
[typescript] 컴포넌트 간에 interface를 export하고 import 했는데 아무리해도 오류가 날때..! (0) | 2022.01.23 |
[typescript] 타입선언은 대체 어디에 ? ? 타입이 똑같아도 모든파일에서 다 ? (컴포넌트간 타입선언 해보기) (0) | 2022.01.23 |
[typescript] ts파일안에 html 파일 import 할때 타입선언하기 (InstaceType) (0) | 2022.01.17 |
[typescript 기본] 타입스크립트의 모듈화 ( == es6 modules) + 예제 (0) | 2022.01.16 |