Advanced TypeScript for Harness Builders
4. Generics & Constraints
`extends` clauses ensure type parameters meet a minimum shape, plus default type parameters.
Generics with extends constraints ensure type parameters meet a minimum shape.
File: packages/ai/src/types.ts L135-139
export type StreamFunction<TApi extends Api = Api, TOptions extends StreamOptions = StreamOptions> = (
model: Model<TApi>,
context: Context,
options?: TOptions
) => AssistantMessageEventStream;
-
TApi extends Api— constraint: must be an API type -
= Api— default: falls back to the baseApiwhen not specified -
TOptions extends StreamOptions— the options must at least satisfyStreamOptions
File: packages/ai/src/api-registry.ts L66-68
export function registerApiProvider<TApi extends Api, TOptions extends StreamOptions>(
provider: ApiProvider<TApi, TOptions>,
sourceId?: string,
): void { ... }
Multi-parameter generics with constraints on both type parameters.