我有一个react钩子,它用一个额外的键和一个设置该键的功能来丰富对象。输入看起来像这样:
fn(data: {...anything }, key: 'checked', initVal: true)
,输出将如下所示:
{
...originalData,
checked: initVal,
setChecked: (val) => // sets val
}
我不知道如何键入此函数,以便打字稿将知道返回对象上的check和getChecked属性,或者甚至是可能的。帮助将不胜感激!
答案 0 :(得分:1)
您几乎可以使它按您想要的方式工作。我假设名称'checked'
应该是可配置的。很遗憾,您无法根据setChecked
来构造名称checked
。您可以使用更通用的名称(我使用set
),也可以传入设置器名称。
declare function fn<T, TKey extends string, TValue>(data: T, name: TKey, initVal: TValue) : T & Record<TKey, TValue> & {
set(value: TValue): void
}
var r = fn({ prop:1 }, 'checked', true)
r.checked
r.set(true)