Home TIL 18일차
Post
Cancel

TIL 18일차

Type Check

과제 요구사항 중 state의 정합성을 확인하는 요구사항이 있었다. 그래서 나는 정합성 확인을 state의 모든 인자들의 Type이 맞는지 확인을 했다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
const BOOLEAN = "Boolean";
const ARRAY = "Array";
const NULL = "Null";

export const validation = (variable, type) => {
  switch (type) {
    case BOOLEAN: {
      if (typeof variable === "boolean") return variable;

      throw new Error("No Validation");
    }
    case ARRAY: {
      if (variable.constructor == Array) return variable;

      throw new Error("No Validation");
    }
    case NULL: {
      if (variable === null || typeof variable === "string") return variable;

      throw new Error("No Validation");
    }
    case OBJECT: {
      if (variable.constructor == Object) return variable;

      throw new Error("No Validation");
    }
  }
};

이 함수는 첫 번째 인자에는 확인할 변수와 두 번째 인자는 어떤 타입으로 확인하는 변수를 받는다. 어려웠던 부분은 null이 Not Null로 변경되는 것과 Array확인하는 것이 나에겐 어려웠다.

Array는 typeof방법으로 확인하려니 결과가 object로 나와 Obect와 겹쳤다. 그래서 MDN을 찾아보니 Array.isArray 메서드가 있었고 구글링을 해보니 constructor로 확인하는 방법이 있었다.

null은 null자체의 문제보다 null이 아닐 때를 판단하는 것이 어려웠다. 이 문제는 Not null이 어떤 타입인지 생각하니 해결됐다. 처음에는 null인지 확인하는 것도 오래 걸렸지만 MDN과 그동안 공부하면서 익혔던 것 키워드가 도움이 많이 됐다.

-- Missing configuration options! --