Szy*_*ski 3 arguments typescript
我想声明一个函数,其中最后一个参数始终是一个回调.但是当我这样做时:
interface Statement extends events.EventEmitter {
bind(...args, callback?:(err?:Error)=>void) : Statement;
}
Run Code Online (Sandbox Code Playgroud)
我收到一个错误
error TS1014: Rest parameter must be last in list
Run Code Online (Sandbox Code Playgroud)
在typescript中是否可以将Rest参数作为参数列表中的最后一个参数?有什么黑客可以帮我解决这个问题吗?
虽然rest 参数需要是最后一个,但您现在可以在 TS 4.0 中使用可变元组类型:
type VarCallback<T extends any[]> = (...args: [...T, (err?: Error) => void]) => void
Run Code Online (Sandbox Code Playgroud)
VarCallback确保,最后一个函数参数是回调类型(err?: Error) => void。
例如,用前两个参数和声明一个函数类型:stringnumber
type MyCallback = VarCallback<[string, number]>
// (a1: string, a2: number, a3: (err?: Error | undefined) => void) => void
const myCb: MyCallback = (s, n, cb) => {/* your implementation */ }
// s,n,cb are strongly typed now
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1654 次 |
| 最近记录: |