This message was deleted.
# 질문
s
This message was deleted.
x
저는 개인적으로 ID를 통한 리졸빙은 node 리졸버로 통일시키는 게 스키마가 bloating되는 걸 막을 수 있다고 생각하는 편인데, 다른 분들 의견도 궁금하긴 하네요 👀
j
의견 감사해요 의하님 👏
👍 1
h
유즈케이스 따라 만들어요. 노드 리졸버 쓰면 타입매칭과 형변환이 필요해서 오히려 클라이언트가 불편한 감이 있어요
j
형변환은 어떤거 말씀하시는건가요?
h
node 타입을 적절한 쿼리 타입으로 변환하는 것이요
node { …on Article { } } 이러면 사용하는 쪽에서 __typename: Article 로 가드해야해요
j
아하 네 의견 감사합니다 혜성님 👏
x
엥? @Hyeseong Kim fragment spread를 1개만 하면 타입가드 필요 없이 사용 가능합니다
h
음 그건 TypeScript 디테일 같군요...
구조적타이핑이라?
x
차피 Variant가 1종류 뿐인데 가드를 씌워야 해요?
h
아니면 코드생성기마다 다른가
j
아 저는
... on Article
하는게 가드라고 이해했는데 또 다른 무언가가 있군요.
h
그건 어설션이죠
그부분도 가드 맞습니더
가드 & 어설션
x
아 넹 graphql-code-generator에서도 옵션 켜줘야 제가 말한 대로 생성됨
h
네... 그냥 어설션을 제너레이터가 암묵적으로 해준다고 이해
원래는 하셔야합니다
x
ㄴㄴ 그건 아니고요
h
Surface를 넘나드는거기 때문에
x
걍 Union에 타입이 하나만 들어가서
h
skipTypename 을..... 다른데서 쓰잖아요
못꺼요 저거 필요함
x
필요하면 explicitly __typename 넣으면 되죠 쿼리에
Copy code
query {
  node(id: "...") {
    __typename
    ... on Article {
      title
    }
  }
}
이런 식으로 하면 프래그먼트 매칭 안 되도 __typename 날아오니
h
아 네네