Машинописная копия одного интерфейса в другой, но только выбранные поля

Я только начал изучать машинопись. Мне просто интересно, могу ли я скопировать данные одного интерфейса в другой, но получить только определенные данные.

interface user {
 first_name: string;
 last_name: string;
}

interface user_detail {
 email: string;
 username: string;
 first_name: string;
 last_name: string;
}

const data : user_detail ={
 email: "test@gmail.com";
 username: "test";
 first_name: "test";
 last_name: "test";
}

const _data : user = data;
console.log('_data ->', _data);

я хочу, чтобы _data содержала только то, что есть для пользователя, который является только first_name и last_name

большое спасибо заранее

В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Прошлая статья была первой из цикла статей о создании системы электронной коммерции с использованием Keystone.js, и она была посвящена главным образом...
0
0
17
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

TypeScript — это всего лишь инструмент для аннотирования вашего кода информацией о типе. Это может помочь вам отловить ошибки до того, как ваш код запустится, и улучшить вашу IDE, но одна из фундаментальных философий, лежащих в основе TypeScript, заключается в том, что он вносит лишь минимальные изменения в ваш код, когда он компилируется из TypeScript в JavaScript. В большинстве случаев единственными изменениями, которые вносятся во время компиляции, является удаление аннотаций типов TypeScript.

Чтобы сделать то, что вы просили, вам нужно написать собственную функцию, которая принимает объект типа user_detail и возвращает объект типа user, а затем передает вашу переменную data через эту функцию, чтобы удалить свойства, которые вам не нужны. . Точно так же, как обычный JavaScript, но с аннотированной информацией о типе:

interface user {
 first_name: string;
 last_name: string;
}

interface user_detail {
 email: string;
 username: string;
 first_name: string;
 last_name: string;
}

const data : user_detail ={
 email: "test@gmail.com",
 username: "test",
 first_name: "test",
 last_name: "test",
}

function getUser(userDetail: user_detail): user {
  const user: user = {
    first_name: userDetail.first_name,
    last_name: userDetail.last_name,
  };

  return user;
}

const _data : user = getUser(data);
console.log('_data ->', _data);

Площадка для TypeScript

Другие вопросы по теме