// Type definitions for non-npm package @blazor/javascript-interop 3.1 // Project: https://docs.microsoft.com/en-us/aspnet/core/blazor/javascript-interop?view=aspnetcore-3.1 // Definitions by: Piotr Błażejewicz (Peter Blazejewicz) <https://github.com/peterblazejewicz> // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // Minimum TypeScript Version: 3.0 // Here be dragons! // This is community-maintained definition file intended to ease the process of developing // high quality JavaScript interop code to be used in Blazor application from your C# .Net code. // Could be removed without a notice in case official definition types ships with Blazor itself. // tslint:disable:no-unnecessary-generics declare namespace DotNet { /** * Invokes the specified .NET public method synchronously. Not all hosting scenarios support * synchronous invocation, so if possible use invokeMethodAsync instead. * * @param assemblyName The short name (without key/version or .dll extension) of the .NET assembly containing the method. * @param methodIdentifier The identifier of the method to invoke. The method must have a [JSInvokable] attribute specifying this identifier. * @param args Arguments to pass to the method, each of which must be JSON-serializable. * @returns The result of the operation. */ function invokeMethod<T>(assemblyName: string, methodIdentifier: string, ...args: any[]): T; /** * Invokes the specified .NET public method asynchronously. * * @param assemblyName The short name (without key/version or .dll extension) of the .NET assembly containing the method. * @param methodIdentifier The identifier of the method to invoke. The method must have a [JSInvokable] attribute specifying this identifier. * @param args Arguments to pass to the method, each of which must be JSON-serializable. * @returns A promise representing the result of the operation. */ function invokeMethodAsync<T>(assemblyName: string, methodIdentifier: string, ...args: any[]): Promise<T>; /** * Represents the .NET instance passed by reference to JavaScript. */ interface DotNetObject { /** * Invokes the specified .NET instance public method synchronously. Not all hosting scenarios support * synchronous invocation, so if possible use invokeMethodAsync instead. * * @param methodIdentifier The identifier of the method to invoke. The method must have a [JSInvokable] attribute specifying this identifier. * @param args Arguments to pass to the method, each of which must be JSON-serializable. * @returns The result of the operation. */ invokeMethod<T>(methodIdentifier: string, ...args: any[]): T; /** * Invokes the specified .NET instance public method asynchronously. * * @param methodIdentifier The identifier of the method to invoke. The method must have a [JSInvokable] attribute specifying this identifier. * @param args Arguments to pass to the method, each of which must be JSON-serializable. * @returns A promise representing the result of the operation. */ invokeMethodAsync<T>(methodIdentifier: string, ...args: any[]): Promise<T>; } }