Flowtype:如何创建类型保护功能?

时间:2018-10-10 13:19:08

标签: flowtype

我想从功能中使用type refinements。 如何在流程中创建type guard函数(TypeScript)?

TypeScript示例:

function isString(arg: Showable): arg is string {
    return typeof arg === 'string';
}

II 流量

/* @flow */
type Showable = number | string;

// ok
function barOk (arg: Showable) {
  return typeof arg === 'string' ? arg.length : (arg + 1);
}

// type guard function
function isString(arg: Showable) {
    return typeof arg === 'string';
}

// Error
function barError (arg: Showable) {
  return isString(arg) ? arg.length : (arg + 1);
                         // ^ Cannot get `arg.length` because property `length` is missing in `Number`
}

1 个答案:

答案 0 :(得分:1)

将您的isString函数更改为以下内容:

function isString(arg: Showable): boolean %checks {
    return typeof arg === 'string';
}

请参见Predicate Functions