Typescript rxjs映射输出的类型不正确
类型“string | number”上不存在属性“length”。财产 类型“number”上不存在“length”Typescript rxjs映射输出的类型不正确,typescript,rxjs,Typescript,Rxjs,类型“string | number”上不存在属性“length”。财产 类型“number”上不存在“length” 我如何编写它以确保键入正确,而不将返回的作为[number,string]?是,ts将[string,number]转换为(string | number)[,除非您明确指定每个项目的类型: CombineTest([of(1),of('test')])。管道( map([myNumber,myString])=>{ 将[myNumber,myString]返回为[number
我如何编写它以确保键入正确,而不将返回的
作为[number,string]
?是,ts将[string,number]
转换为(string | number)[
,除非您明确指定每个项目的类型:
CombineTest([of(1),of('test')])。管道(
map([myNumber,myString])=>{
将[myNumber,myString]返回为[number,string];
}),
映射(([myNewNumber,myNewString])=>{
常量测试=myNewString.length;
}),
);
如果不想处理显式类型,也可以使用Object而不是Array:
CombineTest([of(1),of('test')])。管道(
map([myNumber,myString])=>{
返回{myNumber,myString};
}),
map({myNewNumber,myNewString})=>{
常量测试=myNewString.length;
})
);
如果您使用的是TS3.6,您还可以编写将[myNumber,myString]返回为常量在第一个示例中,您可以使用映射(([myNewNumber,myNewString]:[number,string])…)
,因为我猜TypeScript可能不知道数组中只需要两个项目。
combineLatest([of(1), of('test')]).pipe(
map(([myNumber, myString]) => {
return [myNumber, myString];
}),
map(([myNewNumber, myNewString]) => {
const test = myNewString.length;
})
);