函数调用另一个函数的打字稿类型,具有相同的参数

问题描述 投票:0回答:1

我确信这很容易,但我似乎无法找到答案(或者也许问正确的问题!)

我有一个库函数(具体来说,这里的

i18n.translator
https://primitives.solidjs.community/package/i18n#static-dictionaries),我想用另一个函数包装它以提供一些后备值基于其他逻辑。

const translator = i18n.translator(dict);

const custom_translator = (path, args?): string => {
    const translation = translator(path, args);
    if (translation) { return translation };
    return "Some fallback";
}

如何使

custom_translator
参数与
translator
类型相同? (
i18n.translator
dict
对象进行一些复杂的类型推断,因此
path
不仅仅是一个字符串!)

typescript
1个回答
0
投票

有多种方法。人们可以利用 Parameters 实用程序类型,它返回来自

F
的所有参数。所以,你这样写你的函数:

const custom_translator = (...args: Parameters<typeof translator>): string => {
    const translation = translator(...args);
    if (translation) { return translation };
    return "Some fallback";
}

你也可以做这样的事情(但它的可维护性较差):

const custom_translator = (path: Parameters<typeof translator>[0], args?: Parameters<typeof translator>[1]): string => {
    const translation = translator(...args);
    if (translation) { return translation };
    return "Some fallback";
}

另一种方法,如果你想完全复制接口,请将

translator
的类型分配给你的变量,但如果你这样做,你的返回类型也会像
translator
那样,我不认为你想要这个。

© www.soinside.com 2019 - 2024. All rights reserved.