У меня есть функция, в этом случае я использую XLSX.read
, эта функция определена для получения одного аргумента и второго, который может быть undef (что я и хочу).
Пока что,когда я пытаюсь использовать эту функцию pointfree в Rxjs Observable, как это
.pipe(
.map(XLSX.read)
)
, я получаю сообщение об ошибке.
error TS2345: Argument of type '(data: any, opts?: ParsingOptions | undefined) => WorkBook' is not assignable to parameter of type '(value: any, index: number) => WorkBook'.
Types of parameters 'opts' and 'index' are incompatible.
Type 'number' is not assignable to type 'ParsingOptions | undefined'.
Вместо этого требуется TypeScript,
.pipe(
.map( (x:any) => XLSX.read(x) )
),
Это потому, что Observable.operator.map определяется как
map<T, R>(project: (value: T, index: number) => R, thisArg?: any): OperatorFunction<T, R>
Почему эта карта (project: (value: T, index: number)
, а не (project: (value: T, index?: number)
с необязательно index
аргумент, который, как кажется, поддерживает TypeScript,
В JavaScript каждый параметр является необязательным, и пользователи могут его оставить по своему усмотрению.Когда они это сделают, их значение не определено. Мы можем получить эту функциональность в TypeScript, добавив ?
в конец параметров, которые мы хотим сделать необязательными.