首页 > 解决方案 > 打字稿从函数中设置值类型

问题描述

这可能很简单,但我找不到答案,感谢任何帮助!我试图让一个函数为一个变量断言一个值类型,我想知道这是否可以通过打字稿:

检查不为空

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

解决方案


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

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

(请注意,您需要使用typeof val,而不仅仅是valisNumber那里)


推荐阅读