美文网首页
TS进阶(四)类型保护

TS进阶(四)类型保护

作者: Viewwei | 来源:发表于2021-01-06 10:26 被阅读0次

类型保护是为了更加精确的知道类型

typeof保护

可以使用typeof用来确定类型,那么参数就可以使用确定类型的方法

  function a(a:number | string | boolean):number{
        if (typeof a == "string"){
            //a.length
            //可以使用字符的方法
        }else if (typeof a == "number"){
        // 可以使用number的方法
        }else{
            //可以使用布尔值
        }
        return 1
    }
}

instanceof 方法

可以使用instanceof用来确定类型,那么参数就可以使用确定类型的方法

 class  A {
        name:string = "1"
    }
    class  C {
        name1:string ="222"
    }
    function AM(param:A |C) {
        if(param instanceof A){
            // param.name
            //可以使用A的属性和方法
        }
    }

null 保护

null保护,就是保护部位null。注意嵌套方法嵌套
function nullCheck(a:string | null){
if (a == null){
return ""
}
return a
}

小知识

使用!表示非空断言,a?.b表示a有值,返回a.b的值,没有返回undefined的

字面量保护

可以使用=== == !== !=来区分字面量的类型

type charat  = '1' | '2'|'3'
    function chara(x:charat) {
        //参数X在函数内部也受类型限制
        if (x =='1'){

        }else if (x=="3")
    }

in 保护

in操作符号可以安全的检查一个对象上是否存在一个属性

 interface A2 {
        A:number
    }
    interface A3{
        B:number
    }
    
    // 这里切记,不能使用typeof instanceof 来判断类型,因为接口(interface)
//    在编译阶段为删除掉
    function test(a:A2|A3){
        if ("A" in a){
            //确定类型为A
        }
    }

自定义类型保护

可以在函数外部定义提个函数用来判断参数的接口类型

    interface C {
        name:string,
        leg:number
    }
    interface C2 {
        name2:string,
        leg:number
    }

    function isC (arg :C|C2): arg is C{
        return (arg as C) .name !== undefined
    }
    function test2(a:C|C2){
        if (isC(a)){
            // 确定为C
        }
    }

相关文章

  • TS进阶(四)类型保护

    类型保护是为了更加精确的知道类型 typeof保护 可以使用typeof用来确定类型,那么参数就可以使用确定类型的...

  • ts type类型 高级类型 类型保护

    type type 关键字用来定义一种类型举个例子 交叉类型 表示将多个类型合并为一个类型,多用在混入 联合类型 ...

  • TS进阶之条件类型

    前端开发者对Javascript中的三元表达式应该都很熟悉,利用三元表达式可以很方便实现根据输入值得到不同的输出结...

  • typeScript语法

    ts类型 ts联合类型使用或 ts定义任意类型any ts定义函数返回值的类型 ts中的类定义 interface接口

  • 【进阶】TS高级类型,泛型

    # 类型别名 type 类型别名就是给已有的类型取一个新名字,并不会新建类型 类型别名:可以用于原始值,联合类型,...

  • Ts 进阶使用指南

    # Ts 使用指南 ## 6、参数类型和返回类型 ```ts // 参数类型和返回类型 function crea...

  • TS高级类型:Extract 与 Exclude

    Extract 是TS提供的一个TS高级type类型【简称TS高级类型】 Extract 用于类 Extract ...

  • typescript笔记--类型篇

    动态监听ts文件变动,自动编译js 生成ts配置文件 类型约束的基本语法 ts的类型: 1.number类型:数字...

  • ts进阶

    发现看完了文档还是不会写,别人写的代码又看不懂,找了篇文档看:https://blog.csdn.net/weix...

  • TS基础(四)联合类型

    联合类型表示取值可以参考多种类型中的一种。联合类型使用|来对多种类型进行分割 联合类型在实际的使用中可以使用typ...

网友评论

      本文标题:TS进阶(四)类型保护

      本文链接:https://www.haomeiwen.com/subject/qsmonktx.html