Я понимаю, для чего это нужно - я вижу преимущества возможности определять псевдоним для сложного типа и использовать его в документации. Таким образом, вы можете определить тип что-то вроде ...
/** @typedef {{x:number, y:number}} */
example.Point;
... и затем использовать его для документирования функции, что-то вроде ...
/**
* @param {example.Point} point
* @return {example.Point}
*/
example.functionThatTakesAPointAndReturnsAPoint(point) {
....
}
Но в чем я не уверен, так это в том, что если он используется только для документации и статической проверки типов компилятора, то зачем typedef нужна эта строка JavaScript? Разве псевдоним не может быть определен целиком в блоке комментариев документации? И, если бы вы обслуживали код напрямую (без его компиляции), что бы интерпретатор JavaScript делал с этой строкой кода после комментария typedef?