TypeScriptを使おうとするとビルドの手間がかかるので、小さいスクリプトで手軽に型チェックだけしたいときにJSDocで簡易的に型をつけたい。

1行目に @ts-check を書くのが重要

// @ts-check

@typedef などを書くことで型チェックが行われてハッピーになれる

/**
 * @typedef {Object} Payload
 * @property {string} channel - channelId
 * @property {Block[]} blocks - block
 */
 
/**
 * @typedef {Object} Block
 * @property {('section' | 'mrkdwn')} type - block type
 * @property {(Block | string)} text - inner block or text
 */
 
/**
 * @param {string} channelId - Slack channel ID
 * @param {string} message - message
 * @returns {Payload}
 */
function slackPayload(channelId, message) {
  // payloadを作成する処理...
  return {
    channel: channelId,
    blocks: [
      {
        type: 'section',
        text: {
          type: 'mrkdwn',
          text: message,
        },
      },
    ],
  }
}
 
function send() {
  const payload = slackPayload('Cxxxxxx', 'hello');
  // payloadを送信する処理....
}