Skip to content
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

Improve type narrowing and error handling #1073

Merged
merged 10 commits into from
Nov 19, 2024
Merged

Conversation

victorlin
Copy link
Member

@victorlin victorlin commented Nov 14, 2024

Description of proposed changes

I mainly went through 54be4d6 and looked for things that can be improved. See commit messages for details.

Related issue(s)

Checklist

@victorlin victorlin self-assigned this Nov 14, 2024
@nextstrain-bot nextstrain-bot temporarily deployed to nextstrain-s-victorlin--2hoob3 November 14, 2024 00:59 Inactive
@victorlin victorlin requested a review from genehack November 14, 2024 01:02
@victorlin victorlin temporarily deployed to nextstrain-s-victorlin--2hoob3 November 14, 2024 01:07 Inactive
@victorlin victorlin temporarily deployed to nextstrain-s-victorlin--2hoob3 November 14, 2024 01:10 Inactive
@victorlin victorlin temporarily deployed to nextstrain-s-victorlin--2hoob3 November 14, 2024 01:15 Inactive
@victorlin victorlin force-pushed the victorlin/type-narrowing branch from 625203e to 25341ae Compare November 14, 2024 01:19
@victorlin victorlin temporarily deployed to nextstrain-s-victorlin--2hoob3 November 14, 2024 01:19 Inactive
Copy link
Member

@ivan-aksamentov ivan-aksamentov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I glanced over and like it. Not checked everything thoroughly though.

Less bangs => approved instantly! :)

Add a custom error class for errors that aren't user error and can be
considered a bug in the code.

For now I've scoped this to ListResources, but a similar approach can be
adopted for other components too.
Instead of indirectly inferring this from presence of a lastUpdated
value for the first group.
This better reflects the actual usage.
This reduces the amount of optional properties and need for scattered
type narrowing downstream.

Some restructuring of the code was necessary for proper type narrowing.
This includes changing the switch/case to if/else which allows
redefining variables with the same name in each block.
This reduces the amount of optional properties and need for scattered
type narrowing downstream.
With the current code, it is not possible for displayName to be unset in
getMaxResourceWidth. Make this clear with type narrowing.
Same behavior but using better practices.
The previous check was loosely coupled, relying on a non-null assertion.
This should be more clear to both the compiler and humans.
With the current code, it is not possible for resources[i-1] to be
undefined. Make this clear with type narrowing.
With the current code, this condition will always fail. Prevent this
from silently passing and instead raise an error.
@victorlin victorlin force-pushed the victorlin/type-narrowing branch from 3e161f8 to f8feb3e Compare November 19, 2024 18:20
@victorlin victorlin temporarily deployed to nextstrain-s-victorlin--2hoob3 November 19, 2024 18:20 Inactive
@victorlin victorlin merged commit e1df53f into master Nov 19, 2024
4 checks passed
@victorlin victorlin deleted the victorlin/type-narrowing branch November 19, 2024 18:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

List Resources: improve null checks on dates
5 participants