-
Notifications
You must be signed in to change notification settings - Fork 40
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix for broken inference on metadata prop #193
Conversation
@mreid21 unless I’m mistaken, I don’t see any code that does a type assertion in that there is no code that throws if the ref is not present. |
function genericForwardRef<T, P = Record<string, unknown>>(
render: (props: P, ref: React.Ref<T>) => JSX.Element
): (props: P & React.RefAttributes<T>) => JSX.Element {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
return React.forwardRef(render) as any;
} I'm not sure what you mean, maybe I'm misunderstanding? I do a type assertion here. If I perform the type assertion directly on |
One downside is that the correct type for |
@dgreene1 @mellis481 I updated the PR to use a type assertion. You can see that if you add the |
Plus one on this PR, I have to do an ugly hack to achieve the same thing:
|
@mreid21 Can you address the failing PR check please? I'll try to have my team review/merge your PR soon. Thanks. |
I added the missing generics for Node. All the tests are passing now. |
Thanks for fixing this. @mellis481 I would love to see this merged! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@mreid21, could you please evaluate/implement my comments?
cc: @mellis481, @dgreene1
@mreid21, thanks for evaluating my comments and updating the PR.
No, because INode already has a generic with a default type. As you mentioned, not all functions are used by the consumer directly, so we can skip as such. But I'd avoid type-casting where possible, e.g., On the other hand, I've found it advisable to use the default type in Node and NodeGroup components since we also used a default type in the TreeView component. @mellis481, @dgreene1, this PR looks good to me. Let's see if checks pass after changes. |
@mreid21 Released in 2.10.0. Thanks for your contribution. Thanks for your patience. In the future, we will work to get PRs reviewed more quickly. CC: @danielbuechele |
This should provide type inference for
element.metadata
. I checked to see that the type was correct when passing metadata. However, I don't know too much aboutpropTypes
since I only really use typescript with React. Please let me know if there is any issues with this approach.fixes #192