getParameterName.js 878 B

123456789101112131415161718192021
  1. import printValue from './printValue.js';
  2. export default function getParameterName(parameterPath) {
  3. if (parameterPath.isIdentifier()) {
  4. return parameterPath.node.name;
  5. }
  6. else if (parameterPath.isAssignmentPattern()) {
  7. return getParameterName(parameterPath.get('left'));
  8. }
  9. else if (parameterPath.isObjectPattern() ||
  10. parameterPath.isArrayPattern()) {
  11. return printValue(parameterPath);
  12. }
  13. else if (parameterPath.isRestElement()) {
  14. return `...${getParameterName(parameterPath.get('argument'))}`;
  15. }
  16. else if (parameterPath.isTSParameterProperty()) {
  17. return getParameterName(parameterPath.get('parameter'));
  18. }
  19. throw new TypeError('Parameter name must be one of Identifier, AssignmentPattern, ArrayPattern, ' +
  20. `ObjectPattern or RestElement, instead got ${parameterPath.node.type}`);
  21. }