-
Notifications
You must be signed in to change notification settings - Fork 12.9k
Closed
Labels
BugA bug in TypeScriptA bug in TypeScriptFix AvailableA PR has been opened for this issueA PR has been opened for this issueHelp WantedYou can do thisYou can do this
Milestone
Description
Bug Report
π Search Terms
contextual type property mapped type inference jsx
π Version & Regression Information
- This is the behavior in every version I tried
β― Playground Link
Playground link with relevant code
π» Code
import React, { ComponentPropsWithRef, ElementType } from "react";
function UnwrappedLink<T extends ElementType = ElementType>(
props: Omit<ComponentPropsWithRef<ElementType extends T ? "a" : T>, "as">
) {
return <a></a>;
}
UnwrappedLink({
onClick: (e) => {
// ^? (parameter) e: React.MouseEvent<HTMLAnchorElement, MouseEvent>
},
});
<UnwrappedLink
onClick={(e) => {
// ^? (parameter) e: any
}}
/>;
π Actual behavior
Contextual signature for onClick
fails to be computed here when using JSX but it works just fine with a regular function call.
The problem here is that the contextual type of JSX attributes is an intersection as it includes IntrinsicAttributes
. Because of that getTypeOfPropertyOfContextualType
fails to call substituteIndexedMappedType
appropriately - this is something that is being already fixed by #52095
π Expected behavior
Since JSX is roughly meant to be a sugar for function calls both of those should behave the same way.
Metadata
Metadata
Assignees
Labels
BugA bug in TypeScriptA bug in TypeScriptFix AvailableA PR has been opened for this issueA PR has been opened for this issueHelp WantedYou can do thisYou can do this