给定一个函数,它接受两个不同类型的对象,对象A和对象B,将两个对象合并为一个并返回该合并对象:
/**
* @description Merge the contents of two objects into a single object
* @param {Object} target The target object of the merge
* @param {Object} ex The object that is merged with target
* @return {Object} The target object
* @example
* var A = {a: function() {console.log(this.a}};
* var B = {b: function() {console.log(this.b}};
*
* pc.extend(A,B);
* A.a();
* // logs "a"
* A.b();
* // logs "b"
*/
这是我提出的,但不知何故,我不确定这是对的:
function extend<T>(target: T, ex: T): T
函数声明应该是什么样的?我应该使用泛型吗?如何定义要返回的合并类型?
答案 0 :(得分:3)
您正在描述交叉点类型,它是多种类型的组合。您的方案甚至在documentation。
中进行了解释在您的情况下,您需要引入第二个通用参数来表示其他类型。您的签名应如下所示:
function extend<T, U>(target: T, ex: U): T & U