合并两个对象的函数的TypeScript定义

时间:2017-12-11 16:46:02

标签: typescript types merge declaration

给定一个函数,它接受两个不同类型的对象,对象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

函数声明应该是什么样的?我应该使用泛型吗?如何定义要返回的合并类型?

1 个答案:

答案 0 :(得分:3)

您正在描述交叉点类型,它是多种类型的组合。您的方案甚至在documentation

中进行了解释

在您的情况下,您需要引入第二个通用参数来表示其他类型。您的签名应如下所示:

function extend<T, U>(target: T, ex: U): T & U