Скажем, у меня есть интерфейс A
:Как это выразить в машинописном тексте?
interface A {
foo: number
bar: string
}
И у меня есть общий тип Option
:
type Option<T> = {
map:() => T
}
Затем я создаю новый интерфейс B
из A
и Option
:
interface B {
foo: Option<number>
bar: Option<string>
}
Как сделать эту операцию более общей? То есть. API я хочу это:
type B = Lift<A>
Где Lift
автоматически отображает каждый член A
к Option
. Обратите внимание, что A
может иметь любое количество элементов любого типа.
Как я могу реализовать Lift
? Если это невозможно в TypeScript, у кого-нибудь есть решение Scala/Haskell?
Отображаемые типы супер крутые - спасибо за ответ. – bcherny