Массив общего типа в объявлении функции лямбды не компиляции

голоса
0

Я пытаюсь построить обобщенную функцию, которая принимает функцию обратного вызова, один из параметров которого является массивом этого общего типа. Метод объявлен как:

private addPossibleIncludedItems<T extends HasId>(
            jsonApiResponse: any,
            objectList: ObjectTO[],
            typeString: TypeString,
            relationshipIdsGetter: (ObjectTO) => string[],
            multipleItemSetter: (ObjectTO, T[]) => void,
                  // compilation error here ^
            conversionCallBack: (any) => T) {
...
}

Я получаю следующее сообщение об ошибке компиляции:

[ts] ',' expected. [1005]

Я не могу показаться, чтобы найти причину этой ошибки, как я видел объявления с общими типами используются в качестве описания параметра массива, так что я вполне в тупике. Почему не мой метод декларации компиляции?

EDIT: один без типа массива компилируется нормально:

private addPossibleIncludedItem<T extends HasId>(
            jsonApiResponse: any,
            objectList: ObjectTO[],
            typeString: TypeString,
            relationshipIdGetter: (ObjectTO) => string,
            singleItemSetter: (ObjectTO, T) => void,
            conversionCallBack: (any) => T) {
// ...
}
Задан 27/11/2018 в 15:06
источник пользователем
На других языках...                            


1 ответов

голоса
3

Назовите параметры, прежде чем дать им тип:

multipleItemSetter: (a: ObjectTO, b: T[]) => void,

Это также относится к:

relationshipIdsGetter: (nameMe: ObjectTO) => string[],

... а также ...

conversionCallBack: (nameMe: any) => T) 

Полный пример:

private addPossibleIncludedItems<T extends HasId>(
    jsonApiResponse: any,
    objectList: ObjectTO[],
    typeString: TypeString,
    relationshipIdsGetter: (nameMe: ObjectTO) => string[],
    multipleItemSetter: (a: ObjectTO, b: T[]) => void,
    conversionCallBack: (nameMe: any) => T) {
}
Ответил 27/11/2018 в 15:10
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more