2016-01-21 79 views
1

假设以下类型的代码(例如使用lodash或明确地喜欢这里):流量类型和合并JSON对象

function extend(base, overwrite) { 
    for (var key in overwrite) 
     base[key] = overwrite[key]; 
    return base; 
} 

var first = extend({ 
    a: 1 
}, { 
    b: 2 
}); 

var second = extend({ 
    c: 3 
}, { 
    d: 4 
}); 

console.log(first.a + first.b + second.c + second.d); 

我如何解释,以流动型,这实际上是罚款?

+1

究竟是什么,你正在尝试应用的限制?这实际上看起来不像类型安全的代码。 –

+0

@PatrickRoberts它的JavaScript。类型安全在这里没有任何业务。 – Antiokus

+0

@PatrickRoberts - 目标是尽可能保持像扩展一样的效用函数,同时尽可能强地使第一和第二类型的数据类型,例如, {a:号码,b:号码}和{c:号码,d:号码} –

回答

2

尝试把这种略高于函数声明:

declare function extend<A, B>(a: A, b: B): A & B