typescript - Hvordan definere en type som er typen av å ekskludere 'a' fra string?
Jeg vil definere en type som dette:
type Response = {
type: 'a',
value: string
} | {
type: ???, // any other string except 'a'
value: number
}
Er det mulig?
Jeg prøvde:
type OtherStrings = Exclude<string, 'a'>
Men som ikke fungerer som jeg forventet.
Svar #1
Jeg antar at ingenting bedre enn dette er mulig
type OtherStrings<T> = T extends 'a' ? never : string
const OtherStrings: OtherStrings<'b'> = 'b'
const OtherStrings: OtherStrings<'a'> = 'a' // err
PS. I stedet for slike halvhjertede løsninger som dette, bør du eksplisitt liste opp alle mulige strengalternativer som du ønsker å tillate eller ikke tillate.
