Outlined here.
Local variables store their type via a type index, this is also true for global variables. Since typedef nodes don't live in the type stream, variables cannot have typedefs as types.
The front-end asks the TypeSystem about the type of a variable, but the TypeSystem and SymbolFile can't tell the difference between an unsigned char var; and a uint8_t var; because the actual type-node referenced by the variable will always be the underlying raw unsigned char node.
MSVC currently doesn't output lf_alias either, but it would solve some issues for C/C++ and third-party languages. lf_alias appears to be the equivalent of DW_TAG_typedef, so it would result in better feature parity with dwarf debug info.