The most straightforward way to represent this is with a type alias instead of an interface:
type Sample = {
key1: true,
key2?: string,
key3: number
} | {
key1: false,
key2?: string,
key3?: never
}
In this case the type alias is the union of two types you're describing. So a Sample
should be either the first constituent (where key1
is true and key3
is required) or the second constituent (where key1
is false and key3
is absent).
Type aliases are similar to interfaces but they are not completely interchangeable. If using a type alias leads to some kind of error, please add more detail about your use case in the question.
Hope that helps. Good luck!
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…