typescript - rxjs 地图输出不正确的输入
问题描述
combineLatest([of(1), of('test')]).pipe(
map(([myNumber, myString]) => {
return [myNumber, myString];
}),
map(([myNewNumber, myNewString]) => {
const test = myNewString.length;
})
);
类型“字符串”上不存在属性“长度”| 数字'。类型“数字”上不存在属性“长度”。
我怎样才能写这个,这样打字是正确的,而不用回车as [number, string]
?
解决方案
是的,除非您明确指定每个项目的类型,否则ts 会转换[string, number]
为:(string | number)[]
combineLatest([of(1), of('test')]).pipe(
map(([myNumber, myString]) => {
return [myNumber, myString] as [number, string];
}),
map(([myNewNumber, myNewString]) => {
const test = myNewString.length;
}),
);
或者,如果您不想处理显式类型,则可以使用 Object 而不是 Array:
combineLatest([of(1), of('test')]).pipe(
map(([myNumber, myString]) => {
return {myNumber, myString};
}),
map(({myNewNumber, myNewString}) => {
const test = myNewString.length;
})
);
推荐阅读
- python - Django Rest Framework 未显示 PATCH/PUT 请求的表单字段
- javascript - 系统从睡眠模式恢复后的 Javascript Promise 行为
- php - 使用 php 在电子邮件中发送表单字段
- python - 从 HTML .txt 文件中读取各个部分
- c++ - 如何从类似 SQL 的行中提取所有参数?
- kotlin - 如何在 Kotlin 的 WeakHashMap 上调用“放置”?
- html - 使用 ASP.NET CORE 从选项菜单在数据库中插入数据时出现问题
- node.js - 在 Node.js 应用程序中等待,直到 neo4j 准备就绪:无法执行发现。没有可用的路由服务器
- knockout.js - 如何将项目从淘汰赛 foreach 传递到部分视图作为数据绑定?
- oracle-sqldeveloper - sqldeveloper 将整数插入导出为字符串