联盟类型导致"类型缺少呼叫签名"错误

时间:2017-10-09 15:47:48

标签: typescript

我想通过使用Union Type在Typescript中调用一个包含两种不同类型数组的数组排序函数。函数调用适用于单独的类型,但不适用于Union Type?

    this.shuffle(stringArray);  // array of strings
    this.shuffle(StudentArray); // array of student objects

    // this works
    shuffle(arr:Student[]) {
        arr.sort(() => (Math.random() - 0.5))
    }

    // this works
    shuffle(arr:string[]) {
        arr.sort(() => (Math.random() - 0.5))
    }

    // this gives an error
    shuffle(arr:Student[] | string[]) {
        arr.sort(() => (Math.random() - 0.5))
    }

错误

Cannot invoke an expression whose type lacks a call signature.

1 个答案:

答案 0 :(得分:2)

arr:Student[] | string[]更改为(Student | string)[]