美文网首页
TypeScript 的 type predicates

TypeScript 的 type predicates

作者: _扫地僧_ | 来源:发表于2021-08-09 09:10 被阅读0次

    TypeScript type predicates 实际上是一种用户定义的 type guard 的实现方式。

    要定义用户定义的类型保护,我们只需要定义一个返回类型为类型谓词 (type predicates) 的函数:

    
    function  isFish(pet: Fish | Bird): pet  is  Fish {
    
    return (pet  as  Fish).swim !== undefined;
    
    }
    
    

    在这个例子中,pet is Fish 是我们的类型谓词。 谓词采用 parameterName is Type 形式,其中 parameterName 必须是当前函数签名中的参数名称。

    例子:

    
    type Fish = { swim: () => void };
    
    type Bird = { fly: () => void };
    
    function isFish(pet: Fish | Bird): pet is Fish {
    
      return (pet as Fish).swim !== undefined;
    
    }
    
    function getSmallPet(index:number){
    
      if( index === 1){
    
        return {
    
          swim: () => console.log('Hello')
    
        }
    
      }
    
      return {
    
        fly: () => console.log('!')
    
      }
    
    }
    
    let pet = getSmallPet(1);
    
    if (isFish(pet)) {
    
      pet.swim();
    
    } else {
    
      pet.fly();
    
    }
    
    

    相关文章

      网友评论

          本文标题:TypeScript 的 type predicates

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