Slackbot
06/23/2021, 10:10 AMHyeseong Kim
06/23/2021, 10:14 AMundefined
06/23/2021, 10:16 AMHyeseong Kim
06/23/2021, 10:20 AMtype Node = {
id: string,
};
type Edge<NodeType extends Node> = {
node: NodeType,
};
type Connection<NodeType extends Node, EdgeType extends Edge<NodeType> = Edge<NodeType>> = {
edges: EdgeType[],
pageInfo: PageInfo,
};
type NodeTypeFromConnection<ConnectionType> = ConnectionType extends Connection<infer NodeType> ? NodeType : never;
function extractConnectionInfo<ConnectionType extends Connection<unknown>>(connection: ConnectionType): { nodes: Array<NodeTypeFromConnection<ConnectionType>> } {
...
}
undefined
06/23/2021, 10:22 AMHyeseong Kim
06/23/2021, 10:23 AMHyeseong Kim
06/23/2021, 10:23 AMundefined
06/24/2021, 1:23 AMConnection<unknown>
에서 에러가 나네여 ㅠundefined
06/24/2021, 1:24 AMundefined
06/24/2021, 1:30 AMnode
가 undefined
도 포함해서 함수 사용하는 입장에선 undefined
를 필터링해줘야 하네요. 리턴값 node
를 undefined
포함 안하게 하는 방법이 있을까여Hyeseong Kim
06/24/2021, 1:39 AMHyeseong Kim
06/24/2021, 1:39 AMNode 의 제약조건을 충족하지 않는다고 하네요그럼 Node 를 넣으면 되죠
undefined
06/24/2021, 1:39 AM엣지가 왜 nullable 이여야해요?실제로 nullable 이에여
undefined
06/24/2021, 1:40 AM그럼 Node 를 넣으면 되죠이게 어떤 말씀이신가요? 노드의 타입은 엣지를 받아서 추론하는건데
Hyeseong Kim
06/24/2021, 1:42 AMHyeseong Kim
06/24/2021, 1:42 AMundefined
06/24/2021, 1:43 AMflatMap
으로 해주고 있습니다undefined
06/24/2021, 1:43 AMconst nodes = edges?.flatMap((edge) => edge?.node ?? []) ?? [];
undefined
06/24/2021, 1:44 AMpageInfo
랑 edges
를 받아서 hasNextPage
, endCursor
, nodes
를 가져오는 건데 edges
안에 들어있는 노드의 타입을 추론하려는거에여Hyeseong Kim
06/24/2021, 2:00 AMHyeseong Kim
06/24/2021, 2:00 AMundefined
06/24/2021, 2:02 AMHyeseong Kim
06/24/2021, 2:02 AMHyeseong Kim
06/24/2021, 2:02 AMHyeseong Kim
06/24/2021, 2:03 AMundefined
06/24/2021, 2:14 AMnode
값에는 id
말고 다른 값들도 있어서 저렇게는 추론이 안되더라고여 그래서 type Node = unknown
으로 재정의하니 되네요. 감사합니다. 🙇♂️Hyeseong Kim
06/24/2021, 2:45 AM