Skip to content

⬅️ Back to Table of Contents

📄 isTypeBrandedLiteralLike

📊 Analysis Summary

Metric Count
🔧 Functions 4

📚 Table of Contents

🛠️ File Location:

📂 packages/type-utils/src/isTypeBrandedLiteralLike.ts

Functions

isTypeBrandedLiteralLike(type: ts.Type): boolean

Parameters:

  • type ts.Type

Returns: boolean

Calls:

  • type.isUnion
  • type.types.every
  • isTypeBrandedLiteral
Code
export function isTypeBrandedLiteralLike(type: ts.Type): boolean {
  return type.isUnion()
    ? type.types.every(isTypeBrandedLiteral)
    : isTypeBrandedLiteral(type);
}

isLiteralOrTaggablePrimitiveLike(type: ts.Type): boolean

Parameters:

  • type ts.Type

Returns: boolean

Calls:

  • type.isLiteral
  • tsutils.isTypeFlagSet
Code
function isLiteralOrTaggablePrimitiveLike(type: ts.Type): boolean {
  return (
    type.isLiteral() ||
    tsutils.isTypeFlagSet(
      type,
      ts.TypeFlags.BigInt |
        ts.TypeFlags.Number |
        ts.TypeFlags.String |
        ts.TypeFlags.TemplateLiteral,
    )
  );
}

isObjectLiteralLike(type: ts.Type): boolean

Parameters:

  • type ts.Type

Returns: boolean

Calls:

  • type.getCallSignatures
  • type.getConstructSignatures
  • tsutils.isObjectType
Code
function isObjectLiteralLike(type: ts.Type): boolean {
  return (
    !type.getCallSignatures().length &&
    !type.getConstructSignatures().length &&
    tsutils.isObjectType(type)
  );
}

isTypeBrandedLiteral(type: ts.Type): boolean

Parameters:

  • type ts.Type

Returns: boolean

Calls:

  • type.isIntersection
  • isObjectLiteralLike
  • isLiteralOrTaggablePrimitiveLike
Code
function isTypeBrandedLiteral(type: ts.Type): boolean {
  if (!type.isIntersection()) {
    return false;
  }

  let hadObjectLike = false;
  let hadPrimitiveLike = false;

  for (const constituent of type.types) {
    if (isObjectLiteralLike(constituent)) {
      hadPrimitiveLike = true;
    } else if (isLiteralOrTaggablePrimitiveLike(constituent)) {
      hadObjectLike = true;
    } else {
      return false;
    }
  }

  return hadPrimitiveLike && hadObjectLike;
}

Generated by Syntax Scribe