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)
请求如何解决上面的问题?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.