palantir/blueprint

dataNode on TreeNode should not be optional

Open

#5779 opened on Nov 30, 2022

View on GitHub
 (0 comments) (0 reactions) (0 assignees)TypeScript (20,263 stars) (2,167 forks)batch import
Domain: APIP2Package: coreStatus: to triageType: breaking changeType: enhancementhelp wanted

Description

Environment

  • Package version(s):
  • Browser and OS versions:

Feature request

This line: https://github.com/palantir/blueprint/blob/develop/packages/core/src/components/tree/treeNode.tsx#L83

    /**
     * An optional custom user object to associate with the node.
     * This property can then be used in the `onClick`, `onContextMenu` and `onDoubleClick`
     * event handlers for doing custom logic per node.
     */
    nodeData?: T;

should not be optional. It prevents type checking. If a user wants that to be optional then they can pass in undefined as a union for the generic parameter

Examples

can't do:

const a: ITreeNode<{type: "a"}> = {} as ITreeNode<{type: "a"}>;

if (a.dataNode.type == "a") // can't do this as a.dataNode can be undefined

if user actually wants undefined they can do ITreeNode<{type: "a"} | undefined>

Contributor guide