@virtualstate/navigation
Version:
Native JavaScript [navigation](https://developer.mozilla.org/en-US/docs/Web/API/Navigation_API) implementation
24 lines (21 loc) • 582 B
text/typescript
import { Event, isEvent } from "./event";
export interface RespondEvent<
Name extends string | symbol = string,
T = unknown
> extends Event<Name> {
/**
* @param value
* @throws InvalidStateError
*/
respondWith(value: T | Promise<T>): void;
}
export function isRespondEvent<T = unknown>(
value: object
): value is RespondEvent<string, T> {
function isRespondEventLike(
value: object
): value is Partial<Record<keyof RespondEvent, unknown>> {
return isEvent(value);
}
return isRespondEventLike(value) && typeof value.respondWith === "function";
}