More tools at your disposal is better than less.
Actually, that's wrong. Less is better. Perfection is achieved when there's nothing more that you could remove and still have the product you want. Keep It Simple.
And that's the issue with Swift. This is only version 1 and it already seems to be quite complex. There's way too many different things.
IE: Classes, Structs, and Enums. I get Classes and Enums, but Structs seem to add a lot of complexity with little return value.
Or the complexity of naming variables in functions (I can't remember all the rules right now... something about a # and inserting spaces and underscores...)
Or what the heck is that whole chapter on Initializers that can and can't be inherited and blah blah blah?
It looks like they've got a better language with Swift than Obj-C/C/C++ all were... and maybe it's even better than Java/JavaScript... but it seems to me that there's nothing Swift does well that Python can't do as well or better, and yet Python is a much cleaner, simpler language.
Well... we'll see how this goes.
Back to type inferrence, I don't think you're familiar enough with a wide enough variety of languages.
There are type-safe languages, like Java, where for the most part everything is checked at compile time. I say for the most part because unlike Swift's compiler, Java's compiler completely ignores the possibility of null values. As a result, we have every Java programmer's favorite runtime error, the NullPointerException. Alternatively, you can cover your Java code in checks for nulls and error handling. All because the language allows anything to be null and won't check for the possibility at all as part of compilation.
The other huge flaw in Java's type system is that casts are assumed to be valid by the compiler and result in runtime errors if they fail. Again, you can either allow that to happen or cover your code in explicit type checks and error handling because the compiler doesn't handle this kind of check for you.
That's what makes Swift's optional type genius. Theoretically, we'll never see either of Java's huge flaws here, because of optionals. The compiler will verify that optionals are checked before unwrapped (unless you force it to unwrap without a check - but that's a conscious design choice by the programmer, not a mistake like forgetting to check before using it in Java). It'll check before casting.
Then there's the readability of Java. Java isn't quite as bad as Obj-C at being repetitive, but it's pretty bad, where often you'll have the exact same class name be on the left and right side of every equality.
Swift fixes that with type inference. The type name is already on the right in most cases, so you don't need it on the left. Or the name of the type is provided as the return type of what you're calling on the right side, so you don't need it on the left. Or you're using literal syntax on the right, so you don't need it on the left. This does away with the needless redundancy.
So I was mistaken a few minutes ago when I said Swift has nothing on Python. They have type safety on Python. Python has no compilation step at all, so Swift may end up beating it not by virtue of being a cleaner language (because it definitely isn't), but by being a type-safe language that isn't simultaneously retarded (not checking casts or for nulls) and overbearing (requiring type names everywhere) like Java.