我希望能够像do({prop: 'value'});
这样调用我的函数,所以我有以下签名:
public do(data: Partial<T>): void {
thirdParty.process(T); //<-- Argument of type 'Partial<T>' is not assignable to parameter of type 'T'.
}
任何想法如何解决?
类型“ Partial”的参数不能分配给类型“ T”的参数。
这是正确的,并且正在识别错误。
为了说明一个简单的情况:
interface Foo { a: number, b: number }
const wholeFoo: Foo = { a: 1, b: 2 } // Works
const partialFoo: Partial<Foo> = { a: 1 } // Works
const anotherWholeFoo: Foo = partialFoo
// error: a & b could be undefined but both are required
这个例子中失败,因为Foo
需要的值a
和b
,但Partial<Foo>
允许两者被省略。
此处的“修复”是为了实现您如何从Partial<T>
变为完整的T
所有属性。
我不知道您的数据是什么样子,但是可能是这样的:
public do(wholeData: T, newData: Partial<T>): void {
thirdParty.process({ ...wholeData, ...newData });
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句