Извлечь только необходимую переменную из ответа - Angular 7 - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть следующий интерфейс

interface Employee{name?:string;id?:string;role?:string;}

У меня есть такой ответ

{
   "name": "John",
   "id": "ID77777",
   "role": "Engineer",
   "bloodType": "O+ve",
   "placeOfDeployment": "NY"
}

Я хочу извлечь только переменные-члены Interface.So после того, как я сделал с картирование я должен получить

{
   "name": "John",
   "id": "ID77777",
   "role": "Engineer"
}

Ответы [ 3 ]

0 голосов
/ 18 апреля 2020

Вы можете использовать уничтожающий объект

const response = {
  "name": "John",
  "id": "ID77777",
  "role": "Engineer",
  "bloodType": "O+ve",
  "placeOfDeployment": "NY"
}
// this will extract name,id,role property from response
const {name,id,role} = response;
// create a new object and assign those properties
let obj = {
  name,
  id,
  role
};
console.log(obj)
0 голосов
/ 18 апреля 2020

Вы можете использовать ts-transformer-keys , что позволяет получать ключи данного типа.

import { keys } from 'ts-transformer-keys';    

const keysOfEmployee = keys<Employee>();
const response = {
  "name": "John",
  "id": "ID77777",
  "role": "Engineer",
  "bloodType": "O+ve",
  "placeOfDeployment": "NY"
};

const result = {};
keysOfEmployee.forEach(k => result[k] = response[k]); 
0 голосов
/ 18 апреля 2020

Вы можете использовать loda sh с функцией pick или ваниль js с тем же результатом.

const res = {"name": "John","id": "ID77777","role": "Engineer","bloodType": "O+ve","placeOfDeployment": "NY"};

const user = ["name", "id", "role"].reduce((acc, key) => {
  acc[key] = res[key];
  return acc;
}, {})

Примечание: обрабатывать случай, когда в res отсутствуют ключи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...