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)
请求如何解决上面的问题?