Ts之never 类型

107 阅读1分钟

never 类型

// TypeScript 将使用 never 类型来表示不应该存在的状态
// 返回never的函数必须存在无法达到的终点

// 抛出异常,所以 error 将不会有返回值
function error(message: string): never {
    throw new Error(message);
}

// 存在死循环,所以 loop 将不会有返回值
function loop(): never {
    while (true) {
    }
}

//never 与 void 的差异
//void类型只是没有返回值 但本身不会出错
function Void():void {
    console.log();
}

//只会抛出异常没有返回值
function Never():never {
    throw new Error('aaa')
}

// 当鼠标移上去的时候会发现 只有void和number    never在联合类型中会被直接移除
type A = void | number | never

// never 类型的一个应用场景

type A = '小白' | '大白' | '原神白'

function isyuansBai(value:A) {
    switch (value) {
        case "小满":
            break
        case "大满":
            break
        case "超大满":
            break
        default:
            //是用于场景兜底逻辑
            const error:never = value;
            return error
    }
}