Guards (проверка типов)

// Принадлежность объекта типу
function strip(x: string | number) {
    if (typeof x === 'number') {
        return x.toFixed(2)
    }
    
    return x.trim()
}

// Принадлежность объекта классу

class MyResponse {
    header = 'response header'
    result = 'response result'
}

class MyError {
    header = 'error header'
    message = 'error message'
}

function handle(res: MyResponse | MyError) {
    if (res instanceof MyResponse) {
        return {
            info: res.header + res.result
        }
    } else {
        return {
            info: res.header + res.message
        }
    }
}


//

type AlertType = 'success' | 'danger' | 'warning'

function setAlertType(type: AlertType) {
    // ...
}

setAlertType('success')
setAlertType('danger')

Last updated