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

我有一个库函数(具体来说,这里的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.translatordict对象进行一些复杂的类型推断,所以path不仅仅是一个字符串!)

推荐答案

有多种方法.可以使用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拥有,我认为您不想要这样.

Typescript相关问答推荐

Typescript如何从字符串中提取多个文本

Angular 过滤器形式基于某些条件的数组控制

界面中这种类型的界面界面中的多态性

如何防止TypeScript允许重新分配NTFS?

JS Redux Devtools扩展不工作

React router 6.22.3不只是在生产模式下显示,为什么?

将对象属性转换为InstanceType或原样的强类型方法

如何在单击停止录制按钮后停用摄像机?(使用React.js和Reaction-Media-Recorder)

如何使用一个字段输入对象,其中每个键只能是数组中对象的id属性,而数组是另一个字段?

类型{}上不存在属性&STORE&A;-MobX&A;REACT&A;TYPE脚本

嵌套对象的类型

表单嵌套太深

为什么在这种情况下,打字脚本泛型无法正确自动完成?

将类型脚本函数返回类型提取到VSCode中的接口

有没有更干净的方法来更新**key of T**的值?

为什么`map()`返回类型不能维护与输入相同数量的值?

Typescript不允许在数组中使用联合类型

在对象数组中设置值

React HashRouter,单击导航栏时页面重新加载出现问题

如何让 Promise 将它调用的重载函数的类型转发给它自己的调用者?