Как в TypeScript, добавлять свойство по условию?

В TypeScript вы можете добавить свойство к объекту на основе условия, используя конструкцию if-else или оператор '?'. Давайте рассмотрим оба подхода.

Первый подход с использованием конструкции if-else:

interface MyObject {
  name: string;
  age: number;
}

function addPropertyBasedOnCondition(obj: MyObject): MyObject {
  if (obj.age >= 18) {
    obj.hasDrivingLicense = true;
  } else {
    obj.hasDrivingLicense = false;
  }
  return obj;
}

const person1: MyObject = {
  name: "John",
  age: 25
};
const person2: MyObject = {
  name: "Jane",
  age: 16
};

const personWithDrivingLicense1 = addPropertyBasedOnCondition(person1);
const personWithDrivingLicense2 = addPropertyBasedOnCondition(person2);

console.log(personWithDrivingLicense1); // { name: "John", age: 25, hasDrivingLicense: true }
console.log(personWithDrivingLicense2); // { name: "Jane", age: 16, hasDrivingLicense: false }

В этом примере мы определяем функцию addPropertyBasedOnCondition, которая принимает объект типа MyObject и проверяет его свойство age. Если значение свойства age больше или равно 18, мы добавляем свойство hasDrivingLicense со значением true; в противном случае, мы добавляем свойство hasDrivingLicense со значением false. Затем мы возвращаем измененный объект.

Второй подход с использованием оператора '?':

interface MyObject {
  name: string;
  age: number;
  hasDrivingLicense?: boolean;
}

function addPropertyBasedOnCondition(obj: MyObject): MyObject {
  obj.hasDrivingLicense = obj.age >= 18 ? true : false;
  return obj;
}

const person1: MyObject = {
  name: "John",
  age: 25
};
const person2: MyObject = {
  name: "Jane",
  age: 16
};

const personWithDrivingLicense1 = addPropertyBasedOnCondition(person1);
const personWithDrivingLicense2 = addPropertyBasedOnCondition(person2);

console.log(personWithDrivingLicense1); // { name: "John", age: 25, hasDrivingLicense: true }
console.log(personWithDrivingLicense2); // { name: "Jane", age: 16, hasDrivingLicense: false }

В этом примере мы определяем интерфейс MyObject с опциональным свойством hasDrivingLicense, которое может быть присутствовать или отсутствовать. Затем мы определяем функцию addPropertyBasedOnCondition, которая принимает объект типа MyObject и использует оператор '?' для добавления свойства hasDrivingLicense в зависимости от значения свойства age.

Оба эти подхода решают задачу добавления свойства по условию в TypeScript. Вы можете выбрать подход, который наиболее соответствует вашему проекту и стилю кодирования.