timeout 
Set a time limit for the execution of a specific block of code.
timeout function 
ts
function timeout<TArgs extends any[]>(callback: Action<TArgs>, delay?: number, immediate: boolean = true, ...args: TArgs): TimeoutCreates a timeout that will call the callback after the delay.
Type Parameters 
- TArgs extends any[]
Parameters 
- callback: Action<TArgs>The function to call.
- delay?: numberThe number of milliseconds to delay.
- immediate: boolean = trueWhether to call the callback immediately.
- ...args: TArgsThe arguments to pass to the callback.
Return Timeout 
An object with a start method to start the timeout, a cancel method to cancel the timeout, and an isPending property to check if the timeout is still pending.
Timeout interface 
ts
interface TimeoutProperties 
| Name | Type | Description | 
|---|---|---|
| isPending | boolean | readonly Whether the timeout is still pending. | 
start method 
ts
start(delay?: number, ...args: any[]): voidStart the timeout.
Parameters 
- delay?: numberThe number of milliseconds to delay.
- ...args: any[]The arguments to pass to the callback.
cancel method 
ts
cancel(): voidCancel the timeout.
