根据typescript中的其他已知对象值缩小对象值的类型
我试图键入函数的返回值,因此如果布尔值(根据typescript中的其他已知对象值缩小对象值的类型,typescript,Typescript,我试图键入函数的返回值,因此如果布尔值(在本例中加载)为false,则返回对象的其余部分已知。如果加载为true则对象的其余部分为未定义。我尝试了以下方法: const someFun=(): |{加载:true;输出:未定义} |{加载:false;输出:string}=>{ 常量加载=Math.random()>=0.5 如果(装载){ 返回{正在加载,输出:未定义} } 返回{正在加载,输出:'hello world'} } const{loading,output}=someFun()
在本例中加载
)为false
,则返回对象的其余部分已知。如果加载为true
则对象的其余部分为未定义
。我尝试了以下方法:
const someFun=():
|{加载:true;输出:未定义}
|{加载:false;输出:string}=>{
常量加载=Math.random()>=0.5
如果(装载){
返回{正在加载,输出:未定义}
}
返回{正在加载,输出:'hello world'}
}
const{loading,output}=someFun()
如果(!加载){
console.log(输出)
}
我试图指出,
if(!load)
输出中的是已知的字符串。然而,现在typescript认为此时,输出
可能是字符串|未定义
。有没有一种方法可以设置它,使if块中的输出总是只字符串?这是TS流类型的一个已知限制-将您的赋值更改为const result=someFun()
,您的测试和日志应该工作(if(!result.load)console.log(result.output)
)这是TS流类型的已知限制-将赋值更改为const result=someFun()
,测试和日志应该可以工作(if(!result.loading)console.log(result.output)
)