You can do it by declaring a dummy protocol
protocol SpecialType {}
and let conform the requested types to that protocol
extension String : SpecialType{}
extension Int : SpecialType{}
extension Bool : SpecialType{}
Now the compiler complains if you try to add a Double
let specialDict : [String:SpecialType] = ["1" : "Hello", "2": true, "3": 2.0]
// value of type 'Double' does not conform to expected dictionary value type 'SpecialType'