@typespec/compiler
Version:
TypeSpec compiler and standard library
26 lines • 1.34 kB
TypeScript
import { type Diagnostic } from "../core/types.js";
import { type Typekit } from "./define-kit.js";
/**
* Represents the enhanced function returned by `createDiagnosable`.
* This function, when called directly, ignores diagnostics.
* It also has a `withDiagnostics` method to access the original function's behavior.
* @template F The function type to be wrapped. This should not include diagnostics on the return type.
*/
export type Diagnosable<F extends (...args: any[]) => unknown> = F & {
/**
* Returns a tuple of its primary result and any diagnostics.
*/
withDiagnostics: (...args: Parameters<F>) => [ReturnType<F>, readonly Diagnostic[]];
};
/**
* Creates a diagnosable function wrapper.
*
* The returned function will ignore diagnostics by default.
* A `withDiagnostics` property is attached to the returned function,
* allowing access to the original function's return value including diagnostics.
*
* @param fn The function to wrap, which must return a tuple `[Result, readonly Diagnostic[]]`.
* @returns A function that ignores diagnostics by default, with a `withDiagnostics` method.
*/
export declare function createDiagnosable<P extends unknown[], R>(fn: (this: Typekit, ...args: P) => [R, readonly Diagnostic[]]): Diagnosable<(...args: P) => R>;
//# sourceMappingURL=create-diagnosable.d.ts.map