better typings in trigger functions

This commit is contained in:
2024-06-13 02:18:33 +01:00
parent a9486db3f5
commit c52cd8b4c8
8 changed files with 71 additions and 30 deletions
+8 -2
View File
@@ -10,6 +10,8 @@ import {
RageFW_ClientServerEventReturn,
RageFW_ClientEventArguments,
RageFW_ClientEventReturn,
_ClientEventHasArgs,
_ServerEventHasArgs,
RageFW_CefEvent,
RageFW_CefArgs,
RageFW_CefReturn,
@@ -39,14 +41,18 @@ class Player {
public trigger<EventName extends keyof RageFW_ICustomClientEvent>(
eventName: EventName,
args: RageFW_ClientEventArguments<EventName>,
...args: _ClientEventHasArgs<EventName> extends true
? [RageFW_ClientEventArguments<EventName>]
: []
): Promise<RageFW_ClientEventReturn<EventName>> {
return rpc.call<RageFW_ClientEventReturn<EventName>>(eventName, args)
}
public triggerServer<EventName extends RageFW_ClientServerEvent>(
eventName: EventName,
args: RageFW_ClientServerEventArguments<EventName>,
...args: _ServerEventHasArgs<EventName> extends true
? [RageFW_ClientServerEventArguments<EventName>]
: []
): Promise<RageFW_ClientServerEventReturn<EventName>> {
return rpc.callServer(eventName, args)
}
+8
View File
@@ -31,3 +31,11 @@ export type RageFW_ClientEventReturn<K extends RageFW_ClientEvent> =
K extends keyof RageFW_ICustomClientEvent
? ReturnType<RageFW_ICustomClientEvent[K]>
: never
export type _ClientEventHasArgs<
EventName extends keyof RageFW_ICustomClientEvent,
> = keyof RageFW_ICustomClientEvent extends never
? false
: Parameters<RageFW_ICustomClientEvent[EventName]>[0] extends undefined
? false
: true
+12 -1
View File
@@ -1,6 +1,9 @@
/// <reference types="@ragempcommunity/types-client" />
import type { RageFW_ICustomServerEvent } from 'rage-fw-shared-types'
import type {
RageFW_ICustomClientEvent,
RageFW_ICustomServerEvent,
} from 'rage-fw-shared-types'
/**
* Union of all available server event names callable from client
@@ -26,3 +29,11 @@ export type RageFW_ClientServerEventReturn<K extends RageFW_ClientServerEvent> =
K extends keyof RageFW_ICustomServerEvent
? ReturnType<RageFW_ICustomServerEvent[K]>
: never
export type _ServerEventHasArgs<
EventName extends keyof RageFW_ICustomServerEvent,
> = keyof RageFW_ICustomClientEvent extends never
? false
: Parameters<RageFW_ICustomServerEvent[EventName]>[0] extends undefined
? false
: true