From 9318bfa0e8d8001e1d30c9f7ae9032c8ad9c7877 Mon Sep 17 00:00:00 2001 From: Shigma <1700011071@pku.edu.cn> Date: Sun, 16 Feb 2020 23:26:29 +0800 Subject: [PATCH] feat(core): optimize typings --- packages/koishi-core/src/context.ts | 2 ++ packages/koishi-core/src/database.ts | 22 +++++++++++----------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/packages/koishi-core/src/context.ts b/packages/koishi-core/src/context.ts index 2ee3705875..11c1229f68 100644 --- a/packages/koishi-core/src/context.ts +++ b/packages/koishi-core/src/context.ts @@ -127,6 +127,8 @@ export class Context { }) } + plugin > (plugin: T, options?: T extends PluginFunction ? U : never): this + plugin > (plugin: T, options?: T extends PluginObject ? U : never): this plugin > (plugin: T, options?: T extends Plugin ? U : never) { if (options === false) return const ctx = Object.create(this) diff --git a/packages/koishi-core/src/database.ts b/packages/koishi-core/src/database.ts index 06647bdcf2..c4b0f92de2 100644 --- a/packages/koishi-core/src/database.ts +++ b/packages/koishi-core/src/database.ts @@ -86,24 +86,24 @@ export function createGroup (id: number, assignee: number) { } export interface UserMethods { - getUser (userId: number, fields?: K[]): Promise> - getUser (userId: number, defaultAuthority?: number, fields?: K[]): Promise> + getUser (userId: number, fields?: readonly K[]): Promise> + getUser (userId: number, defaultAuthority?: number, fields?: readonly K[]): Promise> getUsers (fields?: K[]): Promise[]> - getUsers (ids: number[], fields?: K[]): Promise[]> + getUsers (ids: readonly number[], fields?: readonly K[]): Promise[]> setUser (userId: number, data: Partial): Promise - observeUser (user: number | UserData, fields?: K[]): Promise> - observeUser (user: number | UserData, defaultAuthority?: number, fields?: K[]): Promise> + observeUser (user: number | UserData, fields?: readonly K[]): Promise> + observeUser (user: number | UserData, defaultAuthority?: number, fields?: readonly K[]): Promise> getUserCount (): Promise } export interface GroupMethods { - getGroup (groupId: number, fields?: K[]): Promise> - getGroup (groupId: number, selfId?: number, fields?: K[]): Promise> - getAllGroups (assignees?: number[]): Promise[]> - getAllGroups (fields?: K[], assignees?: number[]): Promise[]> + getGroup (groupId: number, fields?: readonly K[]): Promise> + getGroup (groupId: number, selfId?: number, fields?: readonly K[]): Promise> + getAllGroups (assignees?: readonly number[]): Promise[]> + getAllGroups (fields?: readonly K[], assignees?: readonly number[]): Promise[]> setGroup (groupId: number, data: Partial): Promise - observeGroup (group: number | GroupData, fields?: K[]): Promise> - observeGroup (group: number | GroupData, selfId?: number, fields?: K[]): Promise> + observeGroup (group: number | GroupData, fields?: readonly K[]): Promise> + observeGroup (group: number | GroupData, selfId?: number, fields?: readonly K[]): Promise> getGroupCount (): Promise }