箭头样式用户定义类型保护?

Lud*_*igH 10 types typescript arrow-functions

用户定义类型保护打字稿手册定义了一个示例类型保护为

function isFish(pet: Fish | Bird): pet is Fish {
    return (<Fish>pet).swim !== undefined;
}
Run Code Online (Sandbox Code Playgroud)

箭头函数是否有相应的语法?

Jam*_*nne 10

TypeScript 支持箭头函数类型保护(2017 年可能并非如此)。以下现在按预期工作。我在生产代码中经常使用这种风格:

const isFish = (pet: Fish | Bird): pet is Fish => 
  (pet as Fish).swim !== undefined;
Run Code Online (Sandbox Code Playgroud)


uni*_*nal 5

使用类型断言而不是类型声明:

const isFish = (pet => !!pet.swim) as (pet) => pet is Fish 
Run Code Online (Sandbox Code Playgroud)

然而,考虑到它更冗长,我更喜欢将类型保护编写为普通函数,除非您确实需要绑定this,但这可能是代码味道。