diff --git a/.changeset/wicked-olives-fold.md b/.changeset/wicked-olives-fold.md new file mode 100644 index 000000000000..1c9e47e47be2 --- /dev/null +++ b/.changeset/wicked-olives-fold.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + + fix: adjust error overload for optional `App.Error` parameters diff --git a/packages/kit/src/exports/index.js b/packages/kit/src/exports/index.js index 945217d5369c..80132d84411a 100644 --- a/packages/kit/src/exports/index.js +++ b/packages/kit/src/exports/index.js @@ -42,11 +42,11 @@ export { VERSION } from '../version.js'; * Make sure you're not catching the thrown error, which would prevent SvelteKit from handling it. * @param {number} status The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#client_error_responses). Must be in the range 400-599. * @param {string} message The error message. - * @param {{ status: number; message: string } extends App.Error ? never : Omit} properties Additional properties of the App.Error type. + * @param {keyof Omit extends never ? never : Omit} properties Additional properties of the App.Error type. * @overload * @param {number} status * @param {string} message - * @param {{ status: number; message: string } extends App.Error ? never : Omit} properties + * @param {keyof Omit extends never ? never : Omit} properties * @return {never} * @throws {import('./public.js').HttpError} This error instructs SvelteKit to initiate HTTP error handling. * @throws {Error} If the provided status is invalid (not between 400 and 599). diff --git a/packages/kit/test/types/error.test.ts b/packages/kit/test/types/error.test.ts index 561061988117..8f8821c5af0b 100644 --- a/packages/kit/test/types/error.test.ts +++ b/packages/kit/test/types/error.test.ts @@ -1,6 +1,14 @@ import { error, type HandleClientError, type HandleServerError } from '@sveltejs/kit'; import type { StandardSchemaV1 } from '@standard-schema/spec'; +declare global { + namespace App { + interface Error { + description?: string; + } + } +} + const app_error: App.Error = { status: 500, message: 'Unexpected error' }; // @ts-expect-error App.Error requires status @@ -98,9 +106,14 @@ function f() { error(400); } +function g() { + error(400, 'Bad request', { description: 'Invalid request data' }); +} + a; b; c; d; e; f; +g; diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index ffb2717a2ae6..022bb45c4efc 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -2443,10 +2443,7 @@ declare module '@sveltejs/kit' { * @throws {import('./public.js').HttpError} This error instructs SvelteKit to initiate HTTP error handling. * @throws {Error} If the provided status is invalid (not between 400 and 599). */ - export function error(status: number, message: string, properties: { - status: number; - message: string; - } extends App.Error ? never : Omit): never; + export function error(status: number, message: string, properties: keyof Omit extends never ? never : Omit): never; /** * Throws an error with a HTTP status code and an optional message. * When called during request handling, this will cause SvelteKit to