fix(shared,react): Remove TypeScript error suppression in ClerkProvider#7726
Draft
jacekradko wants to merge 1 commit intomainfrom
Draft
fix(shared,react): Remove TypeScript error suppression in ClerkProvider#7726jacekradko wants to merge 1 commit intomainfrom
jacekradko wants to merge 1 commit intomainfrom
Conversation
- Change SignOut type from overloaded interface to union parameter type for better TypeScript structural compatibility - Add ClerkProviderValue type that IsomorphicClerk can satisfy - Update ClerkContextProvider to accept ClerkProviderValue - Remove @ts-expect-error from ClerkProvider The SignOut type previously used function overloads which TypeScript cannot structurally match against a single function implementation. Changing to union parameters maintains API compatibility while fixing the type mismatch. ClerkProviderValue is a relaxed version of Clerk that: 1. Allows methods to return void (for pre-mount queuing) 2. Makes client, billing, apiKeys optional 3. Omits internal browser-specific methods This creates an explicit type boundary at ClerkContextProvider where the cast to LoadedClerk is documented and justified.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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