With the choice of a post-order encoding, bottom-up typing is obvious and could be used in the binary encoding too, see WebAssembly#620
The literal constants do not have a type specifier and for bottom-up typing they need a type. There is not always a top-down type either for example (drop (i64.const 1)) is ambiguous in the text format. Could use 1L for i64 and 1F0 or 1D0 etc for the floats.