dom*_*kyi 5 node.js express typescript
我需要使用下一个签名覆盖方法res.end:
res.end = (data: any, encoding: string)
Run Code Online (Sandbox Code Playgroud)
但是TS返回下一个错误:
Type '(data: any, encoding: string) => void' is not assignable to type '{
(cb?: (() => void) | undefined): void;
(chunk: any, cb?: (() => void) | undefined): void;
(chunk: any, encoding: string, cb?: (() => void) | undefined): void;
}'.ts(2322)
Run Code Online (Sandbox Code Playgroud)
我曾尝试传递空的回调,但并没有帮助:
res.end = (data: any, encoding: string, callback: `() =>void`): void
Run Code Online (Sandbox Code Playgroud)
将您的函数类型设置为any,这意味着它可以转换(或分配)为任何类型。
尝试这个
res.end = ((data: any, encoding: string): void => { }) as any;
Run Code Online (Sandbox Code Playgroud)
更新
您可以创建一个扩展的类型express.Response,它覆盖end方法( 的方法NodeJS.WritableStream)。
import { Request, Response, Handler } from 'express';
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>
interface MyResponse extends Omit<Response, "end"> {
end: (data: any, encoding: string) => void;
}
const handler: Handler = (req: Request, res: MyResponse) => {
res.end = (data: any, encoding: string) => {
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
143 次 |
| 最近记录: |