Open
Conversation
a760f12 to
c3eee92
Compare
c3eee92 to
a700f73
Compare
a700f73 to
86e65eb
Compare
86e65eb to
a8fffa6
Compare
a8fffa6 to
8c92173
Compare
8c92173 to
7fc90f2
Compare
7fc90f2 to
3788189
Compare
3788189 to
a292701
Compare
a292701 to
be0177e
Compare
be0177e to
81b1576
Compare
81b1576 to
10b5e2a
Compare
10b5e2a to
088d375
Compare
088d375 to
073c0a3
Compare
073c0a3 to
b7ab719
Compare
b7ab719 to
219692c
Compare
219692c to
4a4e7b6
Compare
4a4e7b6 to
52a3641
Compare
52a3641 to
cb1c132
Compare
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.
This PR contains the following updates:
^5.0.5→^5.9.0Release Notes
gvergnaud/ts-pattern (ts-pattern)
v5.9.0Compare Source
New features
P.recordpatternsTo match a
Record<Key, Value>(an object with consistent key and value types), you can useP.record(keyPattern, valuePattern).It takes a sub-pattern to match against the key, a sub-pattern to match against the value, and will match if all entries in the object
match these two sub-patterns.
You can also use
P.recordwith a single argumentP.record(valuePattern), which assumes string keys:When using
P.selectin record patterns, you can extract all keys or all values as arrays:What's Changed
New Contributors
Full Changelog: gvergnaud/ts-pattern@v5.8.0...v5.9.0
v5.8.0Compare Source
TS-Pattern v5.8.0 Release Notes
New Feature:
.narrow()Method for Deep Type Narrowing.narrow()gives you fine-grained control over type narrowing of deeply nested union types during pattern matching.What is
.narrow()?The
.narrow()method allows you to explicitly narrow the input type to exclude all values that have been handled by previous patterns. This is especially useful when working with:When to Use
.narrow()By default, TS-Pattern automatically narrows top-level union types as you pattern match. However, for deeply nested types, this narrowing doesn't happen automatically to maintain optimal TypeScript performance. The
.narrow()method gives you explicit control over when to perform this more computationally expensive operation.Example Usage
Additional Improvements
Full Changelog: gvergnaud/ts-pattern@v5.7.1...v5.8.0
PRs
v5.7.1Compare Source
Type inference bug fixes
This new release fixes the following bug in exhaustiveness checking when matching on optional properties:
These two cases don't type check anymore. They fail with a
NonExhaustiveError<{ type?: undefined; }>. To fix it, you should do:This is a purely type-level change, the runtime behavior is still the same.
What's Changed
Full Changelog: gvergnaud/ts-pattern@v5.7.0...v5.7.1
v5.7.0Compare Source
New feature
Exhaustive callback
By default,
.exhaustive()will throw an error if the input value wasn't handled by any.with(...)clause. This should only happen if your types are incorrect.It is possible to pass your own handler function as a parameter to decide what should happen if an unexpected value has been received. You can for example throw your own custom error:
Or log an error and return a default value:
Improved narrowing for
isMatchingisMatching didn't have full feature parity with match in terms of type narrowing, but now does.
What's Changed
Full Changelog: gvergnaud/ts-pattern@v5.6.2...v5.7.0
v5.6.2Compare Source
What's Changed
Full Changelog: gvergnaud/ts-pattern@v5.6.1...v5.6.2
v5.6.1Compare Source
What's Changed
Full Changelog: gvergnaud/ts-pattern@v5.6.0...v5.6.1
v5.6.0Compare Source
This release contains two changes:
Typecheck pattern when using isMatching with 2 parameter.
It used to be possible to pass a pattern than could never match to
isMatching. The new version checks that the provide pattern does match the value in second parameter:Do not use
P.inferas an inference pointWhen using
P.infer<Pattern>to type a function argument, like in the following example:TypeScript could get confused and find type errors in the wrong spot:
This new version fixes this problem.
What's Changed
P.inferandisMatchingby @gvergnaud in #302Full Changelog: gvergnaud/ts-pattern@v5.5.0...v5.6.0
v5.5.0Compare Source
What's Changed
New Contributors
Full Changelog: gvergnaud/ts-pattern@v5.4.0...v5.5.0
v5.4.0Compare Source
The main thing — Faster type checking 🚀
This release brings a significant perf improvement to exhaustiveness checking, which led to a ~16% decrease in the time to type-check the full test suite of TS-Pattern:
What's Changed
InvertPatternForExcludeInternalto work with readonly array by @changwoolab in #284New Contributors
Full Changelog: gvergnaud/ts-pattern@v5.3.1...v5.4.0
v5.3.1Compare Source
Pattern-matching on symbol keys
Symbols used to be ignored in object patterns. They are now taken into account:
.exhaustivenow throws a custom errorPeople have expressed the need to differentiate runtime errors that
.exhaustive()might throw when the input is of an unexpected type from other runtime errors that could have happened in the same match expression. It's now possible witherr instanceof NonExhaustiveError:What's Changed
ExhaustiveErrorwhen no matched pattern by @adamhamlin in #270New Contributors
Full Changelog: gvergnaud/ts-pattern@v5.2.0...v5.3.1
v5.3.0Compare Source
v5.2.0Compare Source
The main thing
new
P.string.length(n)patternP.string.length(len)matches strings with exactlylencharacters.What's Changed
P.whenpatterns code example by @grigorischristainas in #260New Contributors
Full Changelog: gvergnaud/ts-pattern@v5.1.2...v5.2.0
v5.1.2Compare Source
The main thing
When combining
P.nonNullableandP.nullish, you should get an exhaustive pattern matching expression, but the following case was incorrectly considered non-exhaustive:This is fixed now.
What's Changed
New Contributors
Full Changelog: gvergnaud/ts-pattern@v5.1.1...v5.1.2
v5.1.1Compare Source
What's Changed
Full Changelog: gvergnaud/ts-pattern@v5.1.0...v5.1.1
v5.1.0Compare Source
New features
P.nonNullablewildcardAdd a new
P.nonNullablepattern that will match any value exceptnullorundefined.Closes #60 #154 #190 and will be a work-around for #143.
What's Changed
Full Changelog: gvergnaud/ts-pattern@v5.0.8...v5.1.0
v5.0.8Compare Source
The main thing
This release includes type narrowing improvement to
isMatchingwhen used in its curried form:This also improves type checking performance for complex patterns and fixes a small bug in the ES5 build of TS-Pattern.
What's Changed
Full Changelog: gvergnaud/ts-pattern@v5.0.6...v5.0.8
v5.0.7Compare Source
v5.0.6Compare Source
Close issue issues
What's Changed
New Contributors
Full Changelog: gvergnaud/ts-pattern@v5.0.5...v5.0.6
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.