问题描述
我有一个带有很多参数的复杂函数,所以我定义了自己的类型:
type foo = {
int: number;
str: string;
bool: boolean;
}
为了更清晰地使用参数和回调,我定义了如下函数:
function fooHandler(foo:foo) {
console.log(foo);
}
function useCallback(foo:foo,callback: (foo:foo) => void):void {
console.log('callback call:');
callback(foo);
}
然后,以一种执行方法,我可以创建一个与foo类型相同的对象,指定是否指定类型
const myInlineObj = {
int: 3,str: 'whatever',bool: false,};
useCallback(myInlineObj,fooHandler);
输出:
callback call:
src/main.ts:160
{int: 3,bool: false}
所以工作正常。我还可以在类型拟合对象中将备用参数作为参数插入,如下所示:
const int = 3;
const str = 'Hello';
const bool = true;
useCallback({ int,str,bool },str: 'Hello',bool: true}
但是我不能做的是即使适合foo类型,也要在参数中传入另一个对象参数。 例如:
useCallback({ int,myInlineObj.bool },fooHandler);
我得到一个错误:对象文字只能指定已知的属性,并且'foo'.ts(2345)类型中不存在'myInlineObj'。
将类型中的参数命名为myInlineObj.bool
无效,因此尽管元素适合容器对象的类型,但我不知道如何将另一个对象特定的参数作为参数传递。
我知道我可以传递整个对象,并可以在方法内部访问.bool作为属性,但是如果对象很大,则传递整个对象似乎不是最佳选择,并且不如传递直接需要特定参数。
有关此操作的任何提示?谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)