# mod.ts
/**
 * a is a function
 *
 * @param {string} b some doc
 * @param [c=1] additional doc
 * @param [d] more doc
 * @returns {string} returning doc
 * @throws {number} throw doc
 * @since 1.0.0
 * @experimental
 * @internal
 */
export function a(b, c, d) {}

# output.txt
Defined in file:///mod.ts:13:1

function a(b, c, d): void
  a is a function

  @param {string} b
      some doc

  @param [1] c
      additional doc

  @param [?] d
      more doc

  @return {string}
      returning doc

  @return {number}
      throw doc

  @since
      1.0.0

  @experimental
  @internal


# output.json
[
  {
    "name": "a",
    "isDefault": false,
    "location": {
      "filename": "file:///mod.ts",
      "line": 13,
      "col": 0,
      "byteIndex": 225
    },
    "declarationKind": "export",
    "jsDoc": {
      "doc": "a is a function\n",
      "tags": [
        {
          "kind": "param",
          "name": "b",
          "type": "string",
          "doc": "some doc"
        },
        {
          "kind": "param",
          "name": "c",
          "default": "1",
          "doc": "additional doc"
        },
        {
          "kind": "param",
          "name": "d",
          "optional": true,
          "doc": "more doc"
        },
        {
          "kind": "return",
          "type": "string",
          "doc": "returning doc"
        },
        {
          "kind": "throws",
          "type": "number",
          "doc": "throw doc"
        },
        {
          "kind": "since",
          "doc": "1.0.0"
        },
        {
          "kind": "experimental"
        },
        {
          "kind": "internal"
        }
      ]
    },
    "kind": "function",
    "functionDef": {
      "params": [
        {
          "kind": "identifier",
          "name": "b",
          "optional": false,
          "tsType": null
        },
        {
          "kind": "identifier",
          "name": "c",
          "optional": false,
          "tsType": null
        },
        {
          "kind": "identifier",
          "name": "d",
          "optional": false,
          "tsType": null
        }
      ],
      "returnType": {
        "repr": "void",
        "kind": "keyword",
        "keyword": "void"
      },
      "hasBody": true,
      "isAsync": false,
      "isGenerator": false,
      "typeParams": []
    }
  }
]
