// this is an example of discriminated unions
// this file isn't used in the project
interface ActionAdd {
type: "ADD",
payload: string
}
interface ActionDelete {
type: "DELETE",
payload: number
}
type Actions = ActionAdd | ActionDelete
function reducer(a: Actions) {
switch(a.type) {
case "ADD" : {
// payload is a string
}
case "DELETE" : {
// payload is a number
}
}
}