feat: `lib.announce` type hints.
This commit is contained in:
parent
7dbd42f1b4
commit
0a2e2a7cba
|
@ -1,3 +1,5 @@
|
|||
import { NonameAnnounceType } from "./interface.d.ts"
|
||||
|
||||
export interface IAnnounceSubscriber {
|
||||
subscribe(name: string): void;
|
||||
unsubscribe(name: string): void;
|
||||
|
@ -21,7 +23,7 @@ export class Announce {
|
|||
* @param name - 要推送事件的名称
|
||||
* @param values - 要推送的数据
|
||||
*/
|
||||
publish<T>(name: string, values: T): T
|
||||
publish<Type extends NonameAnnounceType, Name extends keyof Type>(name: Name, values: Parameters<Type[Name]>[0]): Parameters<Type[Name]>[0]
|
||||
|
||||
/**
|
||||
* 订阅给定名字的事件,并返回给定的函数
|
||||
|
@ -33,7 +35,7 @@ export class Announce {
|
|||
* @param name - 要订阅事件的名称
|
||||
* @param method - 事件触发时执行的函数
|
||||
*/
|
||||
subscribe<T>(name: string, method: (values: T) => void): (values: T) => void
|
||||
subscribe<Type extends NonameAnnounceType, Name extends keyof Type>(name: Name, method: Type[Name]): Type[Name]
|
||||
|
||||
/**
|
||||
* 取消指定事件某一个函数的订阅,并返回该函数
|
||||
|
@ -43,7 +45,7 @@ export class Announce {
|
|||
* @param name - 要取消订阅事件的名称
|
||||
* @param method - 订阅指定事件的函数
|
||||
*/
|
||||
unsubscribe<T>(name: string, method: (values: T) => void): (values: T) => void
|
||||
unsubscribe<Type extends NonameAnnounceType, Name extends keyof Type>(name: Name, method: Type[Name]): Type[Name]
|
||||
}
|
||||
|
||||
export class AnnounceSubscriber<T> implements IAnnounceSubscriber {
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
|
||||
export interface NonameAnnounceType {
|
||||
// Apperaence 外观区域
|
||||
// 用于关于无名杀外观方面的通知
|
||||
|
||||
// Apperaence.Theme 无名杀主题区域
|
||||
/**
|
||||
* 主题正在被切换时通知
|
||||
*
|
||||
* @param values - 主题名称
|
||||
*/
|
||||
"Noname.Apperaence.Theme.onChanging": AnnounceFunction<string>
|
||||
|
||||
/**
|
||||
* 主题被切换时通知
|
||||
*
|
||||
* @param values - 主题名称
|
||||
*/
|
||||
"Noname.Apperaence.Theme.onChanged": AnnounceFunction<string>
|
||||
|
||||
/**
|
||||
* 主题被切换时,已经显示完毕后通知
|
||||
*
|
||||
* @param values - 主题名称
|
||||
*/
|
||||
"Noname.Apperaence.Theme.onChangeFinished": AnnounceFunction<string>
|
||||
|
||||
// Game 游戏区域
|
||||
// 包含游戏对局下的通知
|
||||
|
||||
// Game.Event 事件区域
|
||||
/**
|
||||
* 当游戏对局开始时进行通知
|
||||
*
|
||||
* @param values - 空对象
|
||||
*/
|
||||
"Noname.Game.Event.GameStart": AnnounceFunction<{}>
|
||||
|
||||
|
||||
// Init 初始化区域
|
||||
// 用于关于初始化方面的通知
|
||||
|
||||
// Init.Extension 扩展初始化区域
|
||||
/**
|
||||
* 当扩展初始化完成时通知
|
||||
*
|
||||
* @param values - 扩展名称
|
||||
*/
|
||||
"Noname.Init.Extension.onLoad": AnnounceFunction<string>
|
||||
|
||||
|
||||
}
|
||||
|
||||
export type AnnounceFunction<T> = (values: T) => void
|
Loading…
Reference in New Issue