我想使用函数中的类型改进。 如何在流程中创建类型保护函数(TypeScript)?
I 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`
}
将您的
isString
函数更改为以下内容:
function isString(arg: Showable): boolean %checks {
return typeof arg === 'string';
}
参见 谓词函数
Flow 实现了 Type Guards,并自
v0.224.0起弃用
%checks
他们推荐使用类型保护语法(类似于 TS):
function isString(arg: any): arg is string {
return typeof arg === "string";
}