diff --git a/packages/opentelemetry-tracing/src/Tracer.ts b/packages/opentelemetry-tracing/src/Tracer.ts index 6a642350f73..03b6ddf87d6 100644 --- a/packages/opentelemetry-tracing/src/Tracer.ts +++ b/packages/opentelemetry-tracing/src/Tracer.ts @@ -176,7 +176,7 @@ export class Tracer implements api.Tracer { ): ReturnType; startActiveSpan ReturnType>( name: string, - options: api.SpanOptions, + options?: api.SpanOptions, fn: F ): ReturnType; startActiveSpan ReturnType>( @@ -184,7 +184,30 @@ export class Tracer implements api.Tracer { options: api.SpanOptions, context: api.Context, fn: F - ): ReturnType { + ): ReturnType; + startActiveSpan ReturnType>( + name: string, + arg2?: F | api.SpanOptions, + arg3?: F | api.Context, + arg4?: F + ): ReturnType | undefined { + let options: api.SpanOptions | undefined; + let context: api.Context | undefined; + let fn: F; + + if (arguments.length < 2) { + return; + } else if (arguments.length === 2) { + fn = arg2 as F; + } else if (arguments.length === 3) { + options = arg2 as api.SpanOptions | undefined; + fn = arg3 as F; + } else { + options = arg2 as api.SpanOptions | undefined; + context = arg3 as api.Context | undefined; + fn = arg4 as F; + } + const parentContext = context ?? api.context.active(); const span = this.startSpan(name, options, parentContext); const contextWithSpanSet = api.setSpan(parentContext, span);