TypeScript 的 type predicates

2021-08-09  本文已影响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();

}

上一篇下一篇

猜你喜欢

热点阅读