首页 > 解决方案 > 类型脚本中的两个类型变量

问题描述

我有一个函数参数,它接受两种类型: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
        });
}

标签: typescripttypes

解决方案


使用Array.isArray确定类型:

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

编译数组的原因是该|选项仅公开两种类型共享的属性和方法。检查类型是否为 anobject不起作用的原因是因为object没有join方法。


推荐阅读