Typescript împarte obiectul în proprietăți din mai multe interfețe


Mă întrebam dacă este posibil să merg de la

interface AnB extends InterFaceA, InterfaceB
const aAndB: AnB = {etc etc}

back to 

const valuesFromInterfaceA = all values from aAndB that exist on InterfaceA
const valuesFromInterfaceB = all values from aAndB that exist on InterfaceB

Fără a ști exact ce proprietăți oferă InterfaceA/InterfaceB obiectului.

Răspuns #1

cu import * as _ from 'lodash'; și cunoscând toți membrii fiecărui InterFaceA sau InterFaceB, poți folosi

const valuesFromInterfaceA = _.pick(aAndB, 'memberFromA');

sau

const valuesFromInterfaceA = _.omit(aAndB, 'memberFromB');

Răspunsul #2

Dacă intenția este intellisense, deoarece folosești TypeScript, ai putea pur și simplu să atribui un tip variabilelor, astfel:

interface AnB extends InterFaceA, InterFaceB
const aAndB: AnB = { etc etc }

const valuesFromInterfaceA: InterFaceA = aAndB as InterFaceA
const valuesFromInterfaceB: InterFaceB = aAndB as InterFaceB