打字稿从函数设置值类型

时间:2021-07-16 19:16:16

标签: typescript

这可能很简单,但我找不到答案,感谢您的帮助!我正在尝试让函数断言变量的值类型,我想知道这是否可以通过打字稿实现:

检查非空

function isNull(val: any) {
    return val == null
}
function fn( val: string | null ) {
    // if (val == null) return // works
    if (isNull(val)) return // doesn't work
    val.split(",")
}

检查 var 是否为数字

function isNumber(val: any) {
    return val == "number"
}
function fn2(  val: string | number ) {
    // if (typeof val == "number") return // works
    if (isNumber(val)) return // doesn't work
    val.split(",")
}

Typescript sandbox

1 个答案:

答案 0 :(得分:1)

使函数类型保护,以向 TypeScript 编译器指示返回的真值表明参数是特定类型:

function isNull(val: any): val is null {
    return val == null
}
function isNumber(val: any): val is number {
    return typeof val == "number"
}

(请注意,您需要使用 typeof val,而不仅仅是 val 中的 isNumber