-
Notifications
You must be signed in to change notification settings - Fork 13.1k
Open
Labels
BugA bug in TypeScriptA bug in TypeScriptDomain: This-TypingThe issue relates to providing types to thisThe issue relates to providing types to thisRescheduledThis issue was previously scheduled to an earlier milestoneThis issue was previously scheduled to an earlier milestone
Milestone
Description
π Search Terms
"jsx component with this
", "jsx component ThisParameterType"
π Version & Regression Information
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about JSX
β― Playground Link
π» Code
declare namespace JSX {
type LibraryManagedAttributes<C, P> = ThisParameterType<C>;
interface IntrinsicElements {
div: {};
}
}
function Test<T>(this: { value: T }) {
return <div>{ this.value }</div>
}
<Test<number> value={5} /> // value is unknown
π Actual behavior
TypeScript is incorrectly inferring props types for JSX functional components with generic templates when props are derived from the 'this' parameter.
Even when explicitly typed as <number>
, the Test
component still exhibits the issue where the type of value remains unknown
.
π Expected behavior
It should infer the type from the passed data or at least accept that you explicitly type it with <Test<number> ...
Additional information about the issue
If you define a separate variable and assign the component with <Test<number>>
, the value
prop's type gets correctly inferred as number
.
const TypedTest = Test<number>;
<TypedTest value={5} /> // value is number
Metadata
Metadata
Assignees
Labels
BugA bug in TypeScriptA bug in TypeScriptDomain: This-TypingThe issue relates to providing types to thisThe issue relates to providing types to thisRescheduledThis issue was previously scheduled to an earlier milestoneThis issue was previously scheduled to an earlier milestone