Typescript 类型脚本中的两个类型变量

Typescript 类型脚本中的两个类型变量,typescript,types,Typescript,Types,我有一个函数参数,它接受两种类型:string | string[]。我将此参数用于只接受string类型的烤面包机服务,因此当我使用join(“”)时,我遇到一个错误:属性“join”在类型“string”| string[]上不存在。类型“string”上不存在属性“join”。并且无法编译应用程序 showToaster(msg: string, customClass: string | string[]) { let cstmClass: any; s

我有一个函数参数,它接受两种类型:
string | string[]
。我将此参数用于只接受
string
类型的烤面包机服务,因此当我使用
join(“”)
时,我遇到一个错误:
属性“join”在类型“string”| string[]上不存在。类型“string”上不存在属性“join”。
并且无法编译应用程序

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
        });
}
用于确定类型:

if(Array.isArray(customClass)) {
    cstmClass = customClass.join(' ');
}
else {
    cstmClass = customClass;
}

编译数组的原因是
|
选项仅公开两种类型共享的属性和方法。检查类型是否为
对象
无效的原因是
对象
没有
join
方法。

只有一个改进:Array.isArray(customClass)?cstmClass=customClass.join(“”):cstmClass=customClass;您甚至可以将其进一步改进为:
var cstmClass=Array.isArray(customClass)?customClass.join(“”):customClass