-
Notifications
You must be signed in to change notification settings - Fork 8
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
create utils file #93
Merged
Merged
Conversation
This file contains 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
this is mostly to reduce the unrelated diff on #83
This is wonderful. Thanks for the heads up. |
commit:
|
aryaemami59
added a commit
that referenced
this pull request
Aug 13, 2024
Related to #58 Related to #30 Improve support for overloaded functions (up to 10 overloads). So for an example function type: ```ts type Factorize = { (input: number): number[] (input: bigint): bigint[] } ``` --- `.parameters` gives you an ExpectTypeOf instance with a union of the parameter-tuple types, so: ```ts expectTypeOf<Factorize>().parameters.toEqualTypeOf<[number] | [bigint]>() ``` --- `.returns` gives you an ExpectTypeOf instance with a union of the return types, so ```ts expectTypeOf<Factorize>().returns.toEqualTypeOf<number[] | bigint[]>() ``` --- `.toBeCallableWith(...)` now accepts any overload input, not just the "last" like before. And you can now chain it via `.returns` which gives you the matching return type: ```ts expectTypeOf<Factorize>().toBeCallableWith(5).returns.toEqualTypeOf<number[]>() ``` --- ## Implementation - overload utilities were added - initially, I thought all that was needed was a utility that matches `F` typeargs against a single 10-overload type - but the `test-types` job caught that this _doesn't_ work for typescript <5.3 - for lower typescript versions, it seems we need an approach more like the one in #58 - there are some edge cases the tests found for generic functions and parameterless functions, so there is _sometimes_ some "useless" overload info that has to be explicitly excluded - there are a couple of intermediate utilities to check if the 10-overload type can be used, and to exclude "useless" overloads - equivalents added for constructor parameters too - used the overloaded versions in `DeepBrand` too <details> <summary>update: moved these changes to #93 to reduce diff</summary> - I felt the megafile `index.ts` was finally getting too big with the added overload utilties: - so those were put in a new `overloads.ts` - since overload utils they rely on some other existing utils, I created `utils.ts` to avoid circular references - `index.ts` remains as the home for the main `ExpectTypeOf` exports - added `export * from './utils'` since we have been exporting all the internal utils and I don't want to break people - update: moved these changes to #93 to reduce diff </details> --------- Co-authored-by: Misha Kaletsky <mmkal@users.noreply.github.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Arya Emami <aryaemami59@yahoo.com>
renovate bot
added a commit
to mmkal/trpc-cli
that referenced
this pull request
Aug 20, 2024
##### [`v0.20.0](https://github.com/mmkal/expect-type/releases/tag/v0.20.0) #### Breaking changes - improve overloads support, attempt 2 by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#83 This change updates how overloaded functions are treated. Now, `.parameters` gives you a *union* of the parameter-tuples that a function can take. For example, given the following type: ```ts type Factorize = { (input: number): number[] (input: bigint): bigint[] } ``` Behvaiour before: ```ts expectTypeOf<Factorize>().parameters.toEqualTypeOf<[bigint]>() ``` Behaviour now: ```ts expectTypeOf<Factorize>().parameters.toEqualTypeOf<[number] | [bigint]>() ``` There were similar changes for `.returns`, `.parameter(...)`, and `.toBeCallableWith`. Also, overloaded functions are now differentiated properly when using `.branded.toEqualTypeOf` (this was a bug that it seems nobody found). See [#83](mmkal/expect-type#83) for more details or look at the updated docs (including a new section called "[Overloaded functions](https://github.com/mmkal/expect-type#overloaded-functions)", which has more info on how this behaviour differs for TypeScript versions before 5.3). #### What's Changed - Fix rendering issue in readme by [@mrazauskas](https://github.com/mrazauskas) in mmkal/expect-type#69 - Fix minor issues in docs by [@aryaemami59](https://github.com/aryaemami59) in mmkal/expect-type#91 - create utils file by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#93 - branding.ts and messages.ts by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#95 - improve overloads support, attempt 2 by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#83 - Extends: explain myself [`1e37116`](mmkal/expect-type@1e37116) - Mark internal APIs with `@internal` JSDoc tag ([#104](mmkal/expect-type#104)) [`4c40b07`](mmkal/expect-type@4c40b07) - Re-export everything in `overloads.ts` file ([#107](mmkal/expect-type#107)) [`5ee0181`](mmkal/expect-type@5ee0181) - JSDoc improvements ([#100](mmkal/expect-type#100)) [`0bbeffa`](mmkal/expect-type@0bbeffa) **Full Changelog**: mmkal/expect-type@v0.19.0...v0.20.0
renovate bot
added a commit
to mmkal/trpc-cli
that referenced
this pull request
Aug 20, 2024
##### [`v0.20.0](https://github.com/mmkal/expect-type/releases/tag/v0.20.0) #### Breaking changes - improve overloads support, attempt 2 by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#83 This change updates how overloaded functions are treated. Now, `.parameters` gives you a *union* of the parameter-tuples that a function can take. For example, given the following type: ```ts type Factorize = { (input: number): number[] (input: bigint): bigint[] } ``` Behvaiour before: ```ts expectTypeOf<Factorize>().parameters.toEqualTypeOf<[bigint]>() ``` Behaviour now: ```ts expectTypeOf<Factorize>().parameters.toEqualTypeOf<[number] | [bigint]>() ``` There were similar changes for `.returns`, `.parameter(...)`, and `.toBeCallableWith`. Also, overloaded functions are now differentiated properly when using `.branded.toEqualTypeOf` (this was a bug that it seems nobody found). See [#83](mmkal/expect-type#83) for more details or look at the updated docs (including a new section called "[Overloaded functions](https://github.com/mmkal/expect-type#overloaded-functions)", which has more info on how this behaviour differs for TypeScript versions before 5.3). #### What's Changed - Fix rendering issue in readme by [@mrazauskas](https://github.com/mrazauskas) in mmkal/expect-type#69 - Fix minor issues in docs by [@aryaemami59](https://github.com/aryaemami59) in mmkal/expect-type#91 - create utils file by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#93 - branding.ts and messages.ts by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#95 - improve overloads support, attempt 2 by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#83 - Extends: explain myself [`1e37116`](mmkal/expect-type@1e37116) - Mark internal APIs with `@internal` JSDoc tag ([#104](mmkal/expect-type#104)) [`4c40b07`](mmkal/expect-type@4c40b07) - Re-export everything in `overloads.ts` file ([#107](mmkal/expect-type#107)) [`5ee0181`](mmkal/expect-type@5ee0181) - JSDoc improvements ([#100](mmkal/expect-type#100)) [`0bbeffa`](mmkal/expect-type@0bbeffa) **Full Changelog**: mmkal/expect-type@v0.19.0...v0.20.0
kodiakhq bot
referenced
this pull request
in X-oss-byte/Nextjs
Aug 20, 2024
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [expect-type](https://github.com/mmkal/expect-type) | [`0.19.0` -> `0.20.0`](https://renovatebot.com/diffs/npm/expect-type/0.19.0/0.20.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/expect-type/0.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/expect-type/0.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/expect-type/0.19.0/0.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/expect-type/0.19.0/0.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>mmkal/expect-type (expect-type)</summary> ### [`v0.20.0`](https://github.com/mmkal/expect-type/releases/tag/v0.20.0) [Compare Source](https://github.com/mmkal/expect-type/compare/0.19.0...v0.20.0) #### Breaking changes - improve overloads support, attempt 2 by [@​mmkal](https://github.com/mmkal) in [https://github.com/mmkal/expect-type/pull/83](https://github.com/mmkal/expect-type/pull/83) This change updates how overloaded functions are treated. Now, `.parameters` gives you a *union* of the parameter-tuples that a function can take. For example, given the following type: ```ts type Factorize = { (input: number): number[] (input: bigint): bigint[] } ``` Behvaiour before: ```ts expectTypeOf<Factorize>().parameters.toEqualTypeOf<[bigint]>() ``` Behaviour now: ```ts expectTypeOf<Factorize>().parameters.toEqualTypeOf<[number] | [bigint]>() ``` There were similar changes for `.returns`, `.parameter(...)`, and `.toBeCallableWith`. Also, overloaded functions are now differentiated properly when using `.branded.toEqualTypeOf` (this was a bug that it seems nobody found). See [#​83](https://github.com/mmkal/expect-type/issues/83) for more details or look at the updated docs (including a new section called "[Overloaded functions](https://github.com/mmkal/expect-type#overloaded-functions)", which has more info on how this behaviour differs for TypeScript versions before 5.3). #### What's Changed - Fix rendering issue in readme by [@​mrazauskas](https://github.com/mrazauskas) in [https://github.com/mmkal/expect-type/pull/69](https://github.com/mmkal/expect-type/pull/69) - Fix minor issues in docs by [@​aryaemami59](https://github.com/aryaemami59) in [https://github.com/mmkal/expect-type/pull/91](https://github.com/mmkal/expect-type/pull/91) - create utils file by [@​mmkal](https://github.com/mmkal) in [https://github.com/mmkal/expect-type/pull/93](https://github.com/mmkal/expect-type/pull/93) - branding.ts and messages.ts by [@​mmkal](https://github.com/mmkal) in [https://github.com/mmkal/expect-type/pull/95](https://github.com/mmkal/expect-type/pull/95) - improve overloads support, attempt 2 by [@​mmkal](https://github.com/mmkal) in [https://github.com/mmkal/expect-type/pull/83](https://github.com/mmkal/expect-type/pull/83) - Extends: explain myself [`1e37116`](https://github.com/mmkal/expect-type/commit/1e37116) - Mark internal APIs with `@internal` JSDoc tag ([#​104](https://github.com/mmkal/expect-type/issues/104)) [`4c40b07`](https://github.com/mmkal/expect-type/commit/4c40b07) - Re-export everything in `overloads.ts` file ([#​107](https://github.com/mmkal/expect-type/issues/107)) [`5ee0181`](https://github.com/mmkal/expect-type/commit/5ee0181) - JSDoc improvements ([#​100](https://github.com/mmkal/expect-type/issues/100)) [`0bbeffa`](https://github.com/mmkal/expect-type/commit/0bbeffa) **Full Changelog**: mmkal/expect-type@v0.19.0...v0.20.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View the [repository job log](https://developer.mend.io/github/X-oss-byte/Nextjs).
renovate bot
added a commit
to mmkal/trpc-cli
that referenced
this pull request
Aug 21, 2024
##### [`v0.20.0](https://github.com/mmkal/expect-type/releases/tag/v0.20.0) #### Breaking changes - improve overloads support, attempt 2 by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#83 This change updates how overloaded functions are treated. Now, `.parameters` gives you a *union* of the parameter-tuples that a function can take. For example, given the following type: ```ts type Factorize = { (input: number): number[] (input: bigint): bigint[] } ``` Behvaiour before: ```ts expectTypeOf<Factorize>().parameters.toEqualTypeOf<[bigint]>() ``` Behaviour now: ```ts expectTypeOf<Factorize>().parameters.toEqualTypeOf<[number] | [bigint]>() ``` There were similar changes for `.returns`, `.parameter(...)`, and `.toBeCallableWith`. Also, overloaded functions are now differentiated properly when using `.branded.toEqualTypeOf` (this was a bug that it seems nobody found). See [#83](mmkal/expect-type#83) for more details or look at the updated docs (including a new section called "[Overloaded functions](https://github.com/mmkal/expect-type#overloaded-functions)", which has more info on how this behaviour differs for TypeScript versions before 5.3). #### What's Changed - Fix rendering issue in readme by [@mrazauskas](https://github.com/mrazauskas) in mmkal/expect-type#69 - Fix minor issues in docs by [@aryaemami59](https://github.com/aryaemami59) in mmkal/expect-type#91 - create utils file by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#93 - branding.ts and messages.ts by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#95 - improve overloads support, attempt 2 by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#83 - Extends: explain myself [`1e37116`](mmkal/expect-type@1e37116) - Mark internal APIs with `@internal` JSDoc tag ([#104](mmkal/expect-type#104)) [`4c40b07`](mmkal/expect-type@4c40b07) - Re-export everything in `overloads.ts` file ([#107](mmkal/expect-type#107)) [`5ee0181`](mmkal/expect-type@5ee0181) - JSDoc improvements ([#100](mmkal/expect-type#100)) [`0bbeffa`](mmkal/expect-type@0bbeffa) **Full Changelog**: mmkal/expect-type@v0.19.0...v0.20.0
renovate bot
added a commit
to mmkal/trpc-cli
that referenced
this pull request
Aug 21, 2024
##### [`v0.20.0](https://github.com/mmkal/expect-type/releases/tag/v0.20.0) #### Breaking changes - improve overloads support, attempt 2 by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#83 This change updates how overloaded functions are treated. Now, `.parameters` gives you a *union* of the parameter-tuples that a function can take. For example, given the following type: ```ts type Factorize = { (input: number): number[] (input: bigint): bigint[] } ``` Behvaiour before: ```ts expectTypeOf<Factorize>().parameters.toEqualTypeOf<[bigint]>() ``` Behaviour now: ```ts expectTypeOf<Factorize>().parameters.toEqualTypeOf<[number] | [bigint]>() ``` There were similar changes for `.returns`, `.parameter(...)`, and `.toBeCallableWith`. Also, overloaded functions are now differentiated properly when using `.branded.toEqualTypeOf` (this was a bug that it seems nobody found). See [#83](mmkal/expect-type#83) for more details or look at the updated docs (including a new section called "[Overloaded functions](https://github.com/mmkal/expect-type#overloaded-functions)", which has more info on how this behaviour differs for TypeScript versions before 5.3). #### What's Changed - Fix rendering issue in readme by [@mrazauskas](https://github.com/mrazauskas) in mmkal/expect-type#69 - Fix minor issues in docs by [@aryaemami59](https://github.com/aryaemami59) in mmkal/expect-type#91 - create utils file by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#93 - branding.ts and messages.ts by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#95 - improve overloads support, attempt 2 by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#83 - Extends: explain myself [`1e37116`](mmkal/expect-type@1e37116) - Mark internal APIs with `@internal` JSDoc tag ([#104](mmkal/expect-type#104)) [`4c40b07`](mmkal/expect-type@4c40b07) - Re-export everything in `overloads.ts` file ([#107](mmkal/expect-type#107)) [`5ee0181`](mmkal/expect-type@5ee0181) - JSDoc improvements ([#100](mmkal/expect-type#100)) [`0bbeffa`](mmkal/expect-type@0bbeffa) **Full Changelog**: mmkal/expect-type@v0.19.0...v0.20.0
renovate bot
added a commit
to mmkal/trpc-cli
that referenced
this pull request
Aug 21, 2024
##### [`v0.20.0](https://github.com/mmkal/expect-type/releases/tag/v0.20.0) #### Breaking changes - improve overloads support, attempt 2 by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#83 This change updates how overloaded functions are treated. Now, `.parameters` gives you a *union* of the parameter-tuples that a function can take. For example, given the following type: ```ts type Factorize = { (input: number): number[] (input: bigint): bigint[] } ``` Behvaiour before: ```ts expectTypeOf<Factorize>().parameters.toEqualTypeOf<[bigint]>() ``` Behaviour now: ```ts expectTypeOf<Factorize>().parameters.toEqualTypeOf<[number] | [bigint]>() ``` There were similar changes for `.returns`, `.parameter(...)`, and `.toBeCallableWith`. Also, overloaded functions are now differentiated properly when using `.branded.toEqualTypeOf` (this was a bug that it seems nobody found). See [#83](mmkal/expect-type#83) for more details or look at the updated docs (including a new section called "[Overloaded functions](https://github.com/mmkal/expect-type#overloaded-functions)", which has more info on how this behaviour differs for TypeScript versions before 5.3). #### What's Changed - Fix rendering issue in readme by [@mrazauskas](https://github.com/mrazauskas) in mmkal/expect-type#69 - Fix minor issues in docs by [@aryaemami59](https://github.com/aryaemami59) in mmkal/expect-type#91 - create utils file by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#93 - branding.ts and messages.ts by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#95 - improve overloads support, attempt 2 by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#83 - Extends: explain myself [`1e37116`](mmkal/expect-type@1e37116) - Mark internal APIs with `@internal` JSDoc tag ([#104](mmkal/expect-type#104)) [`4c40b07`](mmkal/expect-type@4c40b07) - Re-export everything in `overloads.ts` file ([#107](mmkal/expect-type#107)) [`5ee0181`](mmkal/expect-type@5ee0181) - JSDoc improvements ([#100](mmkal/expect-type#100)) [`0bbeffa`](mmkal/expect-type@0bbeffa) **Full Changelog**: mmkal/expect-type@v0.19.0...v0.20.0
renovate bot
added a commit
to mmkal/trpc-cli
that referenced
this pull request
Aug 21, 2024
##### [`v0.20.0](https://github.com/mmkal/expect-type/releases/tag/v0.20.0) #### Breaking changes - improve overloads support, attempt 2 by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#83 This change updates how overloaded functions are treated. Now, `.parameters` gives you a *union* of the parameter-tuples that a function can take. For example, given the following type: ```ts type Factorize = { (input: number): number[] (input: bigint): bigint[] } ``` Behvaiour before: ```ts expectTypeOf<Factorize>().parameters.toEqualTypeOf<[bigint]>() ``` Behaviour now: ```ts expectTypeOf<Factorize>().parameters.toEqualTypeOf<[number] | [bigint]>() ``` There were similar changes for `.returns`, `.parameter(...)`, and `.toBeCallableWith`. Also, overloaded functions are now differentiated properly when using `.branded.toEqualTypeOf` (this was a bug that it seems nobody found). See [#83](mmkal/expect-type#83) for more details or look at the updated docs (including a new section called "[Overloaded functions](https://github.com/mmkal/expect-type#overloaded-functions)", which has more info on how this behaviour differs for TypeScript versions before 5.3). #### What's Changed - Fix rendering issue in readme by [@mrazauskas](https://github.com/mrazauskas) in mmkal/expect-type#69 - Fix minor issues in docs by [@aryaemami59](https://github.com/aryaemami59) in mmkal/expect-type#91 - create utils file by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#93 - branding.ts and messages.ts by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#95 - improve overloads support, attempt 2 by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#83 - Extends: explain myself [`1e37116`](mmkal/expect-type@1e37116) - Mark internal APIs with `@internal` JSDoc tag ([#104](mmkal/expect-type#104)) [`4c40b07`](mmkal/expect-type@4c40b07) - Re-export everything in `overloads.ts` file ([#107](mmkal/expect-type#107)) [`5ee0181`](mmkal/expect-type@5ee0181) - JSDoc improvements ([#100](mmkal/expect-type#100)) [`0bbeffa`](mmkal/expect-type@0bbeffa) **Full Changelog**: mmkal/expect-type@v0.19.0...v0.20.0
renovate bot
added a commit
to mmkal/trpc-cli
that referenced
this pull request
Aug 21, 2024
##### [`v0.20.0](https://github.com/mmkal/expect-type/releases/tag/v0.20.0) #### Breaking changes - improve overloads support, attempt 2 by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#83 This change updates how overloaded functions are treated. Now, `.parameters` gives you a *union* of the parameter-tuples that a function can take. For example, given the following type: ```ts type Factorize = { (input: number): number[] (input: bigint): bigint[] } ``` Behvaiour before: ```ts expectTypeOf<Factorize>().parameters.toEqualTypeOf<[bigint]>() ``` Behaviour now: ```ts expectTypeOf<Factorize>().parameters.toEqualTypeOf<[number] | [bigint]>() ``` There were similar changes for `.returns`, `.parameter(...)`, and `.toBeCallableWith`. Also, overloaded functions are now differentiated properly when using `.branded.toEqualTypeOf` (this was a bug that it seems nobody found). See [#83](mmkal/expect-type#83) for more details or look at the updated docs (including a new section called "[Overloaded functions](https://github.com/mmkal/expect-type#overloaded-functions)", which has more info on how this behaviour differs for TypeScript versions before 5.3). #### What's Changed - Fix rendering issue in readme by [@mrazauskas](https://github.com/mrazauskas) in mmkal/expect-type#69 - Fix minor issues in docs by [@aryaemami59](https://github.com/aryaemami59) in mmkal/expect-type#91 - create utils file by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#93 - branding.ts and messages.ts by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#95 - improve overloads support, attempt 2 by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#83 - Extends: explain myself [`1e37116`](mmkal/expect-type@1e37116) - Mark internal APIs with `@internal` JSDoc tag ([#104](mmkal/expect-type#104)) [`4c40b07`](mmkal/expect-type@4c40b07) - Re-export everything in `overloads.ts` file ([#107](mmkal/expect-type#107)) [`5ee0181`](mmkal/expect-type@5ee0181) - JSDoc improvements ([#100](mmkal/expect-type#100)) [`0bbeffa`](mmkal/expect-type@0bbeffa) **Full Changelog**: mmkal/expect-type@v0.19.0...v0.20.0
renovate bot
added a commit
to mmkal/trpc-cli
that referenced
this pull request
Aug 21, 2024
##### [`v0.20.0](https://github.com/mmkal/expect-type/releases/tag/v0.20.0) #### Breaking changes - improve overloads support, attempt 2 by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#83 This change updates how overloaded functions are treated. Now, `.parameters` gives you a *union* of the parameter-tuples that a function can take. For example, given the following type: ```ts type Factorize = { (input: number): number[] (input: bigint): bigint[] } ``` Behvaiour before: ```ts expectTypeOf<Factorize>().parameters.toEqualTypeOf<[bigint]>() ``` Behaviour now: ```ts expectTypeOf<Factorize>().parameters.toEqualTypeOf<[number] | [bigint]>() ``` There were similar changes for `.returns`, `.parameter(...)`, and `.toBeCallableWith`. Also, overloaded functions are now differentiated properly when using `.branded.toEqualTypeOf` (this was a bug that it seems nobody found). See [#83](mmkal/expect-type#83) for more details or look at the updated docs (including a new section called "[Overloaded functions](https://github.com/mmkal/expect-type#overloaded-functions)", which has more info on how this behaviour differs for TypeScript versions before 5.3). #### What's Changed - Fix rendering issue in readme by [@mrazauskas](https://github.com/mrazauskas) in mmkal/expect-type#69 - Fix minor issues in docs by [@aryaemami59](https://github.com/aryaemami59) in mmkal/expect-type#91 - create utils file by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#93 - branding.ts and messages.ts by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#95 - improve overloads support, attempt 2 by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#83 - Extends: explain myself [`1e37116`](mmkal/expect-type@1e37116) - Mark internal APIs with `@internal` JSDoc tag ([#104](mmkal/expect-type#104)) [`4c40b07`](mmkal/expect-type@4c40b07) - Re-export everything in `overloads.ts` file ([#107](mmkal/expect-type#107)) [`5ee0181`](mmkal/expect-type@5ee0181) - JSDoc improvements ([#100](mmkal/expect-type#100)) [`0bbeffa`](mmkal/expect-type@0bbeffa) **Full Changelog**: mmkal/expect-type@v0.19.0...v0.20.0
renovate bot
added a commit
to mmkal/trpc-cli
that referenced
this pull request
Aug 22, 2024
##### [`v0.20.0](https://github.com/mmkal/expect-type/releases/tag/v0.20.0) #### Breaking changes - improve overloads support, attempt 2 by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#83 This change updates how overloaded functions are treated. Now, `.parameters` gives you a *union* of the parameter-tuples that a function can take. For example, given the following type: ```ts type Factorize = { (input: number): number[] (input: bigint): bigint[] } ``` Behvaiour before: ```ts expectTypeOf<Factorize>().parameters.toEqualTypeOf<[bigint]>() ``` Behaviour now: ```ts expectTypeOf<Factorize>().parameters.toEqualTypeOf<[number] | [bigint]>() ``` There were similar changes for `.returns`, `.parameter(...)`, and `.toBeCallableWith`. Also, overloaded functions are now differentiated properly when using `.branded.toEqualTypeOf` (this was a bug that it seems nobody found). See [#83](mmkal/expect-type#83) for more details or look at the updated docs (including a new section called "[Overloaded functions](https://github.com/mmkal/expect-type#overloaded-functions)", which has more info on how this behaviour differs for TypeScript versions before 5.3). #### What's Changed - Fix rendering issue in readme by [@mrazauskas](https://github.com/mrazauskas) in mmkal/expect-type#69 - Fix minor issues in docs by [@aryaemami59](https://github.com/aryaemami59) in mmkal/expect-type#91 - create utils file by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#93 - branding.ts and messages.ts by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#95 - improve overloads support, attempt 2 by [@mmkal](https://github.com/mmkal) in mmkal/expect-type#83 - Extends: explain myself [`1e37116`](mmkal/expect-type@1e37116) - Mark internal APIs with `@internal` JSDoc tag ([#104](mmkal/expect-type#104)) [`4c40b07`](mmkal/expect-type@4c40b07) - Re-export everything in `overloads.ts` file ([#107](mmkal/expect-type#107)) [`5ee0181`](mmkal/expect-type@5ee0181) - JSDoc improvements ([#100](mmkal/expect-type#100)) [`0bbeffa`](mmkal/expect-type@0bbeffa) **Full Changelog**: mmkal/expect-type@v0.19.0...v0.20.0
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 is mostly to reduce the unrelated diff on #83 - it's essentially the same refactor of moving the type-utils like
Not<...>
,Extends<...>
,Eq<...>
et al. to a utils.ts file. I would like for that to be strictly overloads-related as much as possible esp. since it's a potentially controversial change.FYI @aryaemami59 not sure if this will make it harder for you to merge main into your other PR, or if you plan on continuing to do that.