typescript - 类型脚本中的两个类型变量
问题描述
我有一个函数参数,它接受两种类型:string | string[]
. 我将此参数用于仅接受string
类型的烤面包机服务,因此在使用时join(' ')
出现错误:Property 'join' does not exist on type 'string | string[]'. Property 'join' does not exist on type 'string'.
并且无法编译应用程序。
showToaster(msg: string, customClass: string | string[]) {
let cstmClass: any;
switch (typeof customClass) {
case 'string':
cstmClass = customClass;
break;
case 'object':
cstmClass = customClass.join(' ');
break;
}
this.toastrService.show(msg, null, {
toastClass: cstmClass,
timeOut: 3500
});
}
解决方案
使用Array.isArray确定类型:
if(Array.isArray(customClass)) {
cstmClass = customClass.join(' ');
}
else {
cstmClass = customClass;
}
编译数组的原因是该|
选项仅公开两种类型共享的属性和方法。检查类型是否为 anobject
不起作用的原因是因为object
没有join
方法。
推荐阅读
- mysql - SQL - 将 2 个表与日期进行比较
- c++ - 如何在 C++ 中将 OID_PM_WOL_PATTERN_LIST 发送到 NDIS 驱动程序?
- ios - 带 Swift 的步进滑块
- javascript - 传单从离线地图中删除旧/错误图块
- java - 使用 Apache Cordova + Electron 在 Windows 上访问 Java 库
- concurrency - 具有不同 URL 和数据的多个 http 请求
- c++ - 如何从输入中获取字符串向量?
- java - 配置 Logstash 以从 socket 接收数据并将其插入 java 中的 Elasticsearch
- python - SQL-Alchemy 重用列定义
- automated-tests - 当我尝试从 testcafe 脚本访问外部 URL 时出现 500 内部服务器错误