2017-12-20 1 views
5

Sagen Sie, ich habe einen Typ wie folgt;Verwenden Teilweise in geschachtelte Eigenschaft mit Typoskript

interface State { 
    one: string, 
    two: { 
    three: { 
     four: string 
    }, 
    five: string 
    } 
} 

Ich mache Zustand Partial wie diese Partial<State>

Aber wie kann ich auf den verschachtelten Eigenschaften Teil machen, zum Beispiel, wenn ich two auch teilweise machen will.

Wie würde ich das tun?

Antwort

5

Sie können ziemlich leicht Ihren eigenen RecursivePartial Typen definieren, die alle Eigenschaften machen, enthielten verschachtelt diejenigen, optional:

type RecursivePartial<T> = { 
    [P in keyof T]?: RecursivePartial<T[P]>; 
}; 

Wenn Sie nur einige Ihrer Eigenschaften wollen teilweise sein, dann können Sie diese verwenden mit einer Kreuzung und Pick:

type PartialExcept<T, K extends keyof T> = RecursivePartial<T> & Pick<T, K>; 

das alles optional außer für die Schlüssel angegeben im K Parameter machen würde .

3

Dies ist möglich, können Sie eine ‚tief‘ Teiltyp erstellen, wie folgt:

type DeepPartial<T> = { 
    [P in keyof T]?: DeepPartial<T[P]>; 
}; 

Welche wie folgt

verwendet werden können
const state: DeepPartial<State> = { 
    two: { 
     three: { 
      four: '4' 
     } 
    } 
} 
Verwandte Themen