【发布时间】:2023-04-02 06:23:01
【问题描述】:
是否可以像这样包装一个函数并保留类型?
const example = (alpha: string): string => alpha + 'beta';
const wrappedFn = (fn: Function) => fn;
如何从fn 中提取类型并返回与传入函数相同的输入和返回?
【问题讨论】:
标签: typescript
是否可以像这样包装一个函数并保留类型?
const example = (alpha: string): string => alpha + 'beta';
const wrappedFn = (fn: Function) => fn;
如何从fn 中提取类型并返回与传入函数相同的输入和返回?
【问题讨论】:
标签: typescript
您可以在剩余参数中使用元组保留所有输入参数类型(即使有更多参数):
const example = (alpha: string): string => alpha + 'beta';
const wrappedFn = <A extends any[], R>(fn: (...args: A) => R) => (...args: A): R => {
console.log("executing");
return fn(...args);
};
wrappedFn(example)("a")
【讨论】:
你可以使用泛型让fn返回一个与输入函数返回相同类型的函数:
const wrappedFn = <T>(fn: (T) => T) => fn;
【讨论】:
any。