Как вывести боди в зависимости от типа?

Для вывода содержимого "боди" в зависимости от типа, в TypeScript можно использовать условные операторы и возможности языка для работы с типами. Есть несколько способов, которые можно применить, в зависимости от специфики задачи.

1. С использованием условных операторов

Один из простых способов выполнить это - использовать условные операторы, такие как if-else или switch, для проверки типа и соответствующего вывода содержимого "боди". Например:

function displayBody(body: string | number | boolean) {
  if (typeof body === 'string') {
    console.log(`String body: ${body}`);
  } else if (typeof body === 'number') {
    console.log(`Number body: ${body}`);
  } else if (typeof body === 'boolean') {
    console.log(`Boolean body: ${body}`);
  } else {
    console.log('Unsupported body type');
  }
}

const bodyString: string = 'Hello, World!';
const bodyNumber: number = 42;
const bodyBoolean: boolean = true;

displayBody(bodyString); // Output: String body: Hello, World!
displayBody(bodyNumber); // Output: Number body: 42
displayBody(bodyBoolean); // Output: Boolean body: true

2. Использование паттерна "проверка типа" (Type Guards)

TypeScript позволяет использовать паттерн "проверка типа" (Type Guards), с помощью которого можно уточнить тип переменной во время выполнения и выполнить соответствующие операции. Например:

function displayBody(body: string | number | boolean) {
  if (typeof body === 'string') {
    displayStringBody(body);
  } else if (typeof body === 'number') {
    displayNumberBody(body);
  } else if (typeof body === 'boolean') {
    displayBooleanBody(body);
  } else {
    console.log('Unsupported body type');
  }
}

function displayStringBody(body: string) {
  console.log(`String body: ${body}`);
}

function displayNumberBody(body: number) {
  console.log(`Number body: ${body}`);
}

function displayBooleanBody(body: boolean) {
  console.log(`Boolean body: ${body}`);
}

const bodyString: string = 'Hello, World!';
const bodyNumber: number = 42;
const bodyBoolean: boolean = true;

displayBody(bodyString); // Output: String body: Hello, World!
displayBody(bodyNumber); // Output: Number body: 42
displayBody(bodyBoolean); // Output: Boolean body: true

3. Использование интринсических функций TypeScript для проверки типа

TypeScript предоставляет несколько интринсических функций, которые можно использовать для проверки типа во время выполнения, такие как instanceof, Array.isArray, typeof, Object.prototype.toString и другие. Например:

function displayBody(body: string | number | boolean) {
  if (typeof body === 'string') {
    console.log(`String body: ${body}`);
  } else if (typeof body === 'number') {
    console.log(`Number body: ${body}`);
  } else if (typeof body === 'boolean') {
    console.log(`Boolean body: ${body}`);
  } else {
    console.log('Unsupported body type');
  }
}

const bodyString: string = 'Hello, World!';
const bodyNumber: number = 42;
const bodyBoolean: boolean = true;

displayBody(bodyString); // Output: String body: Hello, World!
displayBody(bodyNumber); // Output: Number body: 42
displayBody(bodyBoolean); // Output: Boolean body: true

Все вышеперечисленные способы могут быть использованы для вывода содержимого "боди" в зависимости от типа. Выбор конкретного способа зависит от требований и контекста вашего проекта.