下面koa 的 ts声明,我想把它转成mbt有啥更好的办法?
1、没有any,有的时候卡的很难受
2、基础类型需要写,工作量很大
https://www.npmjs.com/package/@types/koa?activeTab=code
declare class Application<
StateT = Application.DefaultState,
ContextT = Application.DefaultContext,
> extends EventEmitter {
proxy: boolean;
proxyIpHeader: string;
maxIpsCount: number;
middleware: Array<Application.Middleware<StateT, ContextT>>;
subdomainOffset: number;
env: string;
context: Application.BaseContext & ContextT;
request: Application.BaseRequest;
response: Application.BaseResponse;
silent: boolean;
keys: Keygrip | string[];
ctxStorage: AsyncLocalStorage<ContextT> | undefined;
/**
* @param {object} [options] Application options
* @param {string} [options.env='development'] Environment
* @param {string[]} [options.keys] Signed cookie keys
* @param {boolean} [options.proxy] Trust proxy headers
* @param {number} [options.subdomainOffset] Subdomain offset
* @param {string} [options.proxyIpHeader] Proxy IP header, defaults to X-Forwarded-For
* @param {number} [options.maxIpsCount] Max IPs read from proxy IP header, default to 0 (means infinity)
* @param {boolean} [options.asyncLocalStorage] Enable AsyncLocalStorage
*/
constructor(options?: {
env?: string | undefined;
keys?: string[] | undefined;
proxy?: boolean | undefined;
subdomainOffset?: number | undefined;
proxyIpHeader?: string | undefined;
maxIpsCount?: number | undefined;
asyncLocalStorage?: boolean | undefined;
});
/**
* Shorthand for:
*
* http.createServer(app.callback()).listen(...)
*/
listen(port?: number, hostname?: string, backlog?: number, listeningListener?: () => void): Server;
listen(port: number, hostname?: string, listeningListener?: () => void): Server;
listen(port: number, backlog?: number, listeningListener?: () => void): Server;
listen(port: number, listeningListener?: () => void): Server;
listen(path: string, backlog?: number, listeningListener?: () => void): Server;
listen(path: string, listeningListener?: () => void): Server;
listen(options: ListenOptions, listeningListener?: () => void): Server;
listen(handle: any, backlog?: number, listeningListener?: () => void): Server;
listen(handle: any, listeningListener?: () => void): Server;
/**
* Return JSON representation.
* We only bother showing settings.
*/
inspect(): any;
/**
* Return JSON representation.
* We only bother showing settings.
*/
toJSON(): any;
/**
* Use the given middleware `fn`.
*
* Old-style middleware will be converted.
*/
use<NewStateT = {}, NewContextT = {}>(
middleware: Application.Middleware<StateT & NewStateT, ContextT & NewContextT>,
): Application<StateT & NewStateT, ContextT & NewContextT>;
/**
* Return a request handler callback
* for node's native http/http2 server.
*/
callback(): (req: IncomingMessage | Http2ServerRequest, res: ServerResponse | Http2ServerResponse) => Promise<void>;
/**
* Initialize a new context.
*
* @api private
*/
createContext<StateT = Application.DefaultState>(
req: IncomingMessage,
res: ServerResponse,
): Application.ParameterizedContext<StateT>;
/**
* Default error handler.
*
* @api private
*/
onerror(err: Error): void;
/**
* return current context from async local storage
*/
readonly currentContext: ContextT | undefined;
}