打字稿修改或扩展调用签名
Typescript modifying or extending call signatures
能否按如下方式修改函数调用签名:
给定 fn1:
type fn1 = ( a: string, b: number, c: string )=>void
需要伪代码输出:
type fn2 = ( ...fn1.parameters, d: number )=>void // new type: ( a: string, b: number, c: string, d: number )=>void
//or
type fn2 = ( pick<fn1.parameters,'a','c'>, d: number )=>void // new type: ( a: string, c: string, d: number )=>void
您可以使用类型实用程序 Parameters<Type>
从函数中提取参数信息:
type Fn1 = (a: string, b: number, c: string) => void;
type Fn2 = (...params: [...Parameters<Fn1>, number]) => void; // (params_0: string, params_1: number, params_2: string, params_3: number) => void
type Fn3 = (...params: [a: Parameters<Fn1>[0], c: Parameters<Fn1>[2], d: number]) => void; // (a: string, c: string, d: number) => void
能否按如下方式修改函数调用签名:
给定 fn1:
type fn1 = ( a: string, b: number, c: string )=>void
需要伪代码输出:
type fn2 = ( ...fn1.parameters, d: number )=>void // new type: ( a: string, b: number, c: string, d: number )=>void
//or
type fn2 = ( pick<fn1.parameters,'a','c'>, d: number )=>void // new type: ( a: string, c: string, d: number )=>void
您可以使用类型实用程序 Parameters<Type>
从函数中提取参数信息:
type Fn1 = (a: string, b: number, c: string) => void;
type Fn2 = (...params: [...Parameters<Fn1>, number]) => void; // (params_0: string, params_1: number, params_2: string, params_3: number) => void
type Fn3 = (...params: [a: Parameters<Fn1>[0], c: Parameters<Fn1>[2], d: number]) => void; // (a: string, c: string, d: number) => void