Lassen Sie uns sagen, dass ich eine Schnittstelle A
haben:Wie kann ich das in Typoskript ausdrücken?
interface A {
foo: number
bar: string
}
Und ich habe einen generischen Typ Option
:
type Option<T> = {
map:() => T
}
Dann erstelle ich eine neue Schnittstelle B
von A
und Option
:
interface B {
foo: Option<number>
bar: Option<string>
}
Wie kann ich diese Operation allgemeiner machen? Ie. Die API ich will, ist:
type B = Lift<A>
Wo Lift
Karten automatisch jedes Mitglied A
zu einem Option
. Beachten Sie, dass A
beliebig viele Mitglieder haben kann.
Wie kann ich Lift
implementieren? Wenn dies in TypeScript nicht möglich ist, hat jemand eine Scala/Haskell-Lösung?
Mapped Typen sind super cool - danke für die Antwort. – bcherny