javascript - Typescript obține proprietățile interfeței părinți din interfața copil


o întrebare foarte simplă... totuși nu știu. Am următorul exemplu din cod

interface A {
    a:string;
}

interface B extends A{
    b:string;
}

const b:B = {
    a:'a',
    b:'b'
}

const a:A = b;

console.log(a)

Întrebarea este. Acum afișează ambele proprietăți 'a' și 'b'. Totuși, aș dori să obțin doar proprietățile A, excluzând proprietățile B.

Orice răspuns este apreciat.

Răspuns #1

Există o mică confuzie între scopul original al TypeScript și nucleul JavaScript. De exemplu, atunci când modificăm sau creăm clone ale obiectelor JavaScript, implicit nu există loc pentru TS.

În întrebarea ta, creezi o referință către un obiect existent în loc să clonezi unul nou. Se pare că acesta este problema centrală.

Aceasta este abordarea mea față de problema dată efectiv (vezi exemplul TS Playground pentru detalii). Dar verifică asta, dacă te ajută în cazul tău.

interface All {
    a: string;
    b: string;
}

type OnlyA = Pick<All, 'a'>;

const ObjectAll: All = { "a": "a", "b": "b" };
const { a: ObjectA }: OnlyA = ObjectAll;

console.log('ObjectAll', ObjectAll);
console.log('ObjectA', ObjectA);