function getComponentSlotsFromTypeDefine(context, slotsNode) {
  /** @type {(ComponentTypeSlot|ComponentInferTypeSlot|ComponentUnknownSlot)[]} */
  const result = []
  for (const defNode of flattenTypeNodes(
    context,
    /** @type {TSESTreeTypeNode} */ (slotsNode)
  )) {
    if (isTSInterfaceBody(defNode) || isTSTypeLiteral(defNode)) {
      result.push(...extractRuntimeSlots(defNode))
    } else {
      result.push(
        ...getComponentSlotsFromTypeDefineTypes(
          context,
          /** @type {TypeNode} */ (defNode)
        )
      )
    }
  }
  return result
}
Get all slots by looking at all component's properties
@param {RuleContext} context The ESLint rule context object.
@param {TypeNode} slotsNode Type with slots definition
@return {(ComponentTypeSlot|ComponentInferTypeSlot|ComponentUnknownSlot)[]} Array of component slots