7 첫 번째 프로젝트 요약
source: categories/study/vue-beginner-lv5/vue-beginner-lv5_7.md
7.1 첫 번째 프로젝트 요약 정리
Vue Todo With TypeScript
학습한 내용
- Vue + TypeScript 프로젝트 생성 방법
Vue CLI v4.5.15
? Please pick a preset: Manually select features
? Check the features needed for your project: Choose Vue version, Babel, TS, Linter
? Choose a version of Vue.js that you want to start the project with 2.x
? Use class-style component syntax? No
# class-style component 는 안 쓰는 것이 좋다고 말씀드렸었습니다.
# 기존에 class-style component로 쓰여진 프로젝트를 하시는 분들이 고민 많이 되실 수도 있는데,
# 그렇다고 해서 기존 class-style component 코드를 다 버리시기보다는 점진적으로 개선해 나갈 수 있게 ..
# Vue3 부터는 단순히 저희가 사용했던 Vue.extend() 문법으로 변환하는 것이 아니라
# Composition API가 나와서 재사용성을 훨씬 더 높여주면서 타입스크립트 지원을 빵빵하게 해줄 수 있는 Vue 3가 나와있기 때문에
# Vue3 쓰시면서 Composition도 쓰시고 그러면서 자연스럽게 다른 새로운 기능들도 쓰시고 그러면 됩니다.
? Use Babel alongside TypeScript (required for modern mode, auto-detected polyfills, transpiling JSX)? Yes
? Pick a linter / formatter config: Prettier
? Pick additional lint features: Lint on save
? Where do you prefer placing config for Babel, ESLint, etc.? In dedicated config files
# dedicated config files가 아니라 package.json을 선택하시면 나중에 확장하기 굉장히 어려워지실 수 있다.
# 가급적이면 설정 파일들을 따로 분리할 수 있게 하면 좋다.
? Save this as a preset for future projects? No
- 뷰 타입스크립트 프로젝트 기본 구조
main.ts
shims-tsx.d.ts
shims-vue.d.ts
tsconfig.json
- 재활용성을 고려한 공통 컴포넌트 설계 방법(인풋, 목록 아이템)
- 인풋 태그의 한글 입력 처리 방법
.vue
파일에서의 타입스크립트 정의 방식data
todoItems: [] as Todo[]
methods
return
값이 있을 땐return
값의 타입에 대해 정의return
값이 없으면 기본 리턴 값으로void
가 설정되어 있음- 따로 리턴 값에 대해 정의하지 않고 코드 내에
return 'hi'
이런식으로 되어있다면 해당 메소드의return
값을string
이라고 추론 - 다른데서
string
유형이 아닌 다른 유형으로 쓰이면 에러로 잡힘 - 메소드에서는 파라미터의 타입을 정의하는 것이 가장 중요
- 원하지 않은 파라미터 타입이 들어가는 것을 방지
props
todoItem: Object as PropType<Todo>
- 더 이상 Vue에서 제공하는 validation을 사용하지 않아도 됨
- 물론
todoItem: { type: Object as PropType<Todo> }
이렇게 써도됨. 이렇게 쓰는 것이 더 좋을 거 같기도..
computed
- 메소드와 다르게 반드시 리턴값 필요
- 즉, 리턴 값의 유형을 반드시 설정해줘야됨
- 타입스크립트를 사용했을 때의 이점
- 안전한 코딩(secure coding)
- 의도하지 않은 동작에 대해 미리 예방 가능