Этот ответ не на 100% правильный. Нет «нетипизированного» и есть только небольшая разница между * и Object, потому что можно утверждать, что Object также означает нетипизированный, поскольку каждый тип происходит от Object.
Однако * подразумевает неопределенное значение, а Object нет. Большая разница! Это полезно для динамических языков, потому что это означает, что свойство объекта может быть неопределенным, которое отличается от определенного и равно нулю.
Так, например, y не определено в {x: null} и x определено, но без значения. И вы можете использовать это:
var yesNoMaybe: *;
yesNoMaybe = true;
yesNoMaybe = false;
yesNoMaybe = undefined;