如何解决将来自其他对象的参数作为已定义类型打字稿中的参数传递对象文字只能指定已知属性ts2345
我有一个带有很多参数的复杂函数,所以我定义了自己的类型:
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 举报,一经查实,本站将立刻删除。