2016-01-21 101 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