본문 바로가기

# GraphQL/GraphQL.js

타입스크립트 GraphQL Enum Type 클래스



열거형


열거형에 대한 기본적인 설명은 생략합니다.


SDL 스펙에서는 아래처럼 열거형을 선언할 수 있지만,

값은 리졸브되지 않는다는 점에 유의해야 하며,

구현체마다 리졸브 방식이 다릅니다.



아래는 이메일 열거형 타입을

타입스크립트로 구현한 예제입니다.

let MailType = new GraphQLEnumType({
    name: "MAIL",
    values: {
        NAVER: { value: "@naver.com" },
        GOOGLE: { value: "@gmail.com" },
        DAUM: { value: "@daum.net" }
    }
});



열거형 타입은 GraphQLObject를 요구하는 장소에 사용될 수 있습니다.

아래는 매개변수로 사용된 예제입니다.

let query = new GraphQLObjectType({
    name: "enumTestQuery",
    fields: {
        test: {
            type: GraphQLString,
            args: {
                mailType: {
                    type: MailType
                }
            },
            resolve: (parent, args) => {
                /**
                 * 열거형도 다른 변수와 똑같다.
                 * args[ARG_NAME]에 순수 값이 들어있다.
                 */
                let mailType: string = args.mailType;
                return mailType;
            }
        }
    }
});


열거형 변수라고해서 특별한 것이 아닙니다.

리졸브된 값이 args 변수에 들어갑니다.


mailType은 각 타입들의 리졸브 값은 문자열이므로, 

쿼리의 리졸브 함수에서 열거형 변수를 string에 담은것을 알 수 있습니다.



쿼리에서는 열거형의 구체적인 이름으로 접근할 수 있습니다.