客户端类型
declare module 'client-types' {
export interface IRequestBody { type: 'request' }
export interface CreateProjectRequestBody extends IRequestBody { cmd: 'otii_create_project' }
export interface GetArcsRequestBody extends IRequestBody { cmd: 'otii_get_devices' }
export interface OpenProjectRequestBody extends IRequestBody { cmd: 'otii_open_project', payload: { value: string, force: boolean, progress: boolean } }
export interface IResponse {}
export interface CreateProjectResponse extends IResponse { payload: { project_id: number } }
export interface GetArcsResponse extends IResponse { payload: { devices: [ { device_id: number, name: string, type: string } ] } }
export interface OpenProjectResponse extends IResponse { payload: { project_id: string } }
export interface ResponseDevice { device_id: number, name: string, type: string }
export interface CreateProjectResponseData { id: number }
export interface GetArcsResponseData { [index: number]: {id: number, name: string} }
export interface OpenProjectResponseData { id: number }
}
索引
// imports
import {
IRequestBody,
CreateProjectRequestBody,
GetArcsRequestBody,
OpenProjectRequestBody,
IResponse,
CreateProjectResponse,
GetArcsResponse,
OpenProjectResponse,
ResponseDevice,
CreateProjectResponseData,
GetArcsResponseData,
OpenProjectResponseData
} from 'client-types';
// use
request(body: CreateProjectRequestBody) : Promise<CreateProjectResponse>
request(body: GetArcsRequestBody) : Promise<GetArcsResponse>
request(body: OpenProjectRequestBody) : Promise<OpenProjectResponse>
request<T extends IRequestBody>(body: T): Promise<IResponse> {
...
}
async createProject() : Promise<CreateProjectResponseData> {
...
}
import * from from 'client-types';
[ts] 'as' expected.
有没有办法消除这种重复(就像我感觉的那样),或者我已经在使用“最佳实践”?
PS:我正在编写的代码将成为一个npm包。让我知道,如果你认为有什么npm的具体我应该知道有关这个问题。