用 typescript 写了个函数,频频报错,请教如何解决
typescript 初学者开始用 typescript 试着写点东西,却各种报错。遂来请教各位。
下面的函数作用是将两个对象合并,并返回合并结果。
function _merge<T extends U, U> (target: T, source: U) : T { for (let key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { const value = source[key] if (isObject(target[key]) && isObject(value)) { target[key] = _merge(target[key], value) } else if (isObject(value)) { target[key] = _merge({}, value) } else if (isArray(value)) { target[key] = _merge([], value) } } } return target }
然后在target[key] = _merge({}, value)这段代码中的target[key]的错误是
Type 'U[Extract<keyof U, string>]' is not assignable to type 'T[Extract<keyof U, string>]'. Type 'U' is not assignable to type 'T'. 'T' could be instantiated with an arbitrary type which could be unrelated to 'U'.ts(2322)
在 {} 又有错误
Argument of type '{}' is not assignable to parameter of type 'U[Extract<keyof U, string>]'.ts(2345)
最后在 target[key] = _merge([], value) 在的 [] 也有问题
Argument of type 'undefined[]' is not assignable to parameter of type 'never'.ts(2345)
请求如何解决上面的问题?