我理解它的用途 - 我可以看到能够为复杂类型定义别名并在文档中使用它的好处。所以你可以定义一个类似的类型...
/** @typedef {{x:number, y:number}} */
example.Point;
...然后用它来记录一个函数,例如...
/**
* @param {example.Point} point
* @return {example.Point}
*/
example.functionThatTakesAPointAndReturnsAPoint(point) {
....
}
但我不确定的是,如果它仅用于文档和编译器的静态类型检查,那么为什么 typedef 需要那行 JavaScript?别名不能完全在文档注释 block 中定义吗?而且,如果您直接提供代码(不编译它),JavaScript 解释器会如何处理 typedef 注释后的该行代码?
最佳答案
编译器构建在 Rhino 之上,只是增强了可用的语法。我认为从无操作属性访问中获取别名更容易,因为它与标准模式匹配。
关于javascript - 谷歌闭包的 typedef 实际上做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7063207/