是否可以使类似的内容顺畅运行?
const flag: boolean = false
const obj: ?string = flag ? "hello" : null
if (flag) {
(obj: string) // Cannot cast `obj` to string because null or undefined is incompatible with string.
}
我有一个变量obj
,如果flag
为true,则有条件地设置它。我可以做些什么,使流程“记住”是否设置了flag==true
,obj
?
答案 0 :(得分:0)
如果愿意,可以进行转换,但是必须首先对所有其他类型进行测试。
还建议您为此创建一个自定义类型,但是我认为这不是必需的。
这是一个代码示例:
/* @flow */
type ObjectOrString = {}|string|null;
const x: boolean = false
const constObj:ObjectOrString = x ? "hello" : null
var obj:ObjectOrString = x ? "hello" : null
if ( obj && typeof obj === 'object' ) {
let o = (obj:{});
}
if ( obj && typeof obj === 'string' ) {
let o = (obj:string);
}
if ( constObj && typeof constObj === 'object' ) {
let o = (constObj:{});
}
if ( constObj && typeof constObj === 'string' ) {
let o = (constObj:string);
}