javascript - Hur skapar man ett gränssnitt baserat på objektets egenskaper?
Jag använder senaste TypeScript och Angular och jag har ett objekt:
const obj: ObjInterface = {
prop1: 1,
prop2: 2,
prop3: '3'
}
Jag har också ett gränssnitt baserat på det objektet:
interface ObjInterface {
prop1: number;
prop2: number;
prop3: string;
}
Är det möjligt att skapa ett gränssnitt för arrayen som endast består av egenskaperna hos obj?
const array: SomeInterface = ['prop1', 'prop2', 'prop3']; // OK
const array: SomeInterface = ['prop1', 'prop2', 'prop4']; // error
Svar #1
Du kan skapa en array av nycklar av en typ med hjälp av keyof-operatorn
interface ObjInterface {
prop1: number;
prop2: number;
prop3: string;
}
const array: Array<keyof ObjInterface> = ['prop1', 'prop2', 'prop3']; // OK
const array2: Array<keyof ObjInterface> = ['prop1', 'prop2', 'prop4']; // error
Observera Detta kommer att vara ett kompileringstidfel, vid körning kan du ha olika strängar i arrayen om du går utanför typsystemet eller om du använder typantaganden.
