我了解它的用途 - 我可以看到能够为复杂类型定义别名并在文档中使用它的好处。所以你可以定义一个类型,比如......
/** @typedef {{x:number, y:number}} */
example.Point;
...然后用它来记录一个函数,比如...
/**
* @param {example.Point} point
* @return {example.Point}
*/
example.functionThatTakesAPointAndReturnsAPoint(point) {
....
}
但我不确定的是,如果它只用于文档和编译器的静态类型检查,那么为什么 typedef 需要那行 JavaScript?别名不能完全在文档注释块中定义吗?而且,如果您直接提供代码(不编译它),JavaScript 解释器会如何处理 typedef 注释之后的那行代码?