Swift's is true strong [Edit: I should have said "static"] typing. The compiler enforces it but saves you from having to explicitly specify it in unambiguous cases. So:
let x: Int = 3
let y: Int = x
and let x = 3
let y = x
are identical; in both cases, x and y are both strongly-typed as Int.