fix(shared,react): Remove TypeScript error suppression in ClerkProvider #7726
+71
−11
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
SignOuttype from overloaded interface to union parameter type for better TypeScript structural compatibilityClerkProviderValuetype thatIsomorphicClerkcan properly satisfyClerkContextProviderto acceptClerkProviderValueinstead ofClerk@ts-expect-errorsuppression fromClerkProviderProblem
The
ClerkProvidercomponent had a@ts-expect-errorcomment suppressing a type mismatch betweenIsomorphicClerkand the expectedClerktype. This was caused by:SignOutinterface used TypeScript function overloads, which cannot be structurally matched against a single function implementationIsomorphicClerkwraps methods to allow void returns (for pre-mount queuing), making it incompatible withClerkIsomorphicClerkhasclient,billing,apiKeysas optionalSolution
Option A: Fix SignOut type
Changed from overloaded interface to union parameter type - API compatible but structurally matchable:
Option C: Define explicit provider type
Created
ClerkProviderValuetype in@clerk/shared/typesthat:client,billing,apiKeysoptionalThis creates an explicit, documented type boundary at
ClerkContextProvider.Type Flow
Test plan
pnpm build --filter @clerk/sharedpassespnpm build --filter @clerk/reactpassespnpm test --filter @clerk/shared- 952 tests passpnpm test --filter @clerk/react- 340 tests pass