Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

props로 객체가 전달될 때, 타입 체크를 더 확실히하는 방법은 없을까? #25

Open
yejineee opened this issue May 5, 2021 · 0 comments
Assignees
Labels
docs 문서 study 학습

Comments

@yejineee
Copy link
Owner

yejineee commented May 5, 2021

vue.js에서 props에 타입 체크를 위한 기본적인 constructor로 다음을 제공한다.

String
Number
Boolean
Array
Object
Date
Function
Symbol

그러나 이것만으로는 Object안에 있는 프로퍼티의 타입 체크는 불가능하다.
props로 받는 객체의 property의 타입까지 체크하면, 개발하면서도 어떠한 프로퍼티가 있는지 바로 알 수 있고 더 안전할 것이라는 생각이 들었다.

가장 쉽게 해결할 수 있는 방법은 타입스크립트를 쓰는것이다.
안타깝게도 이 플젝은 JS를 쓴다. 타입스크립트를 쓰지 않을거라면, 그와 비슷한 역할을 하는 어떠한 장치를 두어야 한다.

💡 vue에서 그 장치로 쓸 수 있는게 props의 validator라는 프로퍼티이다. 이것은 props로 받은 것의 유효성을 확인해준다.
이 안에서 타입을 체크할 수 있을 것이다.

validator에서 Column 컴포넌트가 받는 object props의 타입 검증을 해주었다.

  props: {
    column: {
      type: Object,
      required: true,
      validator({ id, title, createdAt, cards }) {
        return (
          typeof id === 'string' &&
          typeof title === 'string' &&
          (typeof createdAt === 'string' || createdAt instanceof Date) &&
          cards instanceof Array
        );
      }
    }
  },

만약, validator가 false를 반환한다면, 브라우저에서 경고를 보여준다.

스크린샷 2021-05-05 오후 3 31 40

참고

https://michaelnthiessen.com/unlock-full-potential-prop-types

@yejineee yejineee added the feat 기능 개발 label May 5, 2021
@yejineee yejineee self-assigned this May 5, 2021
@yejineee yejineee added study 학습 docs 문서 and removed feat 기능 개발 labels May 5, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
docs 문서 study 학습
Projects
None yet
Development

No branches or pull requests

1 participant