Diciamo che avere un'interfaccia A
:Come si esprime in Typescript?
interface A {
foo: number
bar: string
}
e ho un tipo generico Option
:
type Option<T> = {
map:() => T
}
Poi ho creare una nuova interfaccia B
da A
e Option
:
interface B {
foo: Option<number>
bar: Option<string>
}
Come posso rendere questa operazione più generale? Vale a dire. L'API che voglio è:
type B = Lift<A>
Dove Lift
mappa automaticamente ogni membro del A
a un Option
. Si noti che A
può avere un numero qualsiasi di membri, di qualsiasi tipo.
Come posso implementare Lift
? Se questo non è possibile in TypeScript, qualcuno ha una soluzione Scala/Haskell?
I tipi di mapping sono fantastici - grazie per la risposta. – bcherny