typescript - Hämta egenskaper hos en typ


Jag kan inte hitta ett sätt att slå upp vid körning om en viss egenskap finns på en typ. Så här (pseudokod)

import { MyType } from '@prisma/client';

MyType.hasProperty("foo") // true/false

MyType.allProperties() // ["foo", "bar", "stuff"]

Vet någon en bra lösning? Tack på förhand!

Svar #1

Typer existerar inte vid körning. Men du kan fortfarande undersöka objekt som existerar vid körning. Du kan använda in-operatorn för att kontrollera om ett objekt innehåller en viss egenskap, och du kan använda Object.keys(someObj) för att få alla nycklar på ett objekt som en array.

const foo = { a: 123, b: 'bar' }
'a' in foo // true
Object.keys(foo) // ['a', 'b']

Vad du inte kan göra är att få denna information från en typ eller ett gränssnitt. Det måste vara ett riktigt objekt som existerar vid körning.

Relaterade artiklar