Skip to content

Nested optional arrays are not callable #53

Description

@frdwhite24

Description:
Optional nested arrays are not callable after being assigned Camelize type with appropriate generic.

Steps to Reproduce:

  1. Import the Camelize type from 'camelize-ts'.
  2. Declare a variable bar of type Camelize<{ foo?: string[] }[]> and initialize it with an array containing an object with an optional foo property.
  3. Attempt to use the map method on baz (the nested array items).
import { Camelize } from 'camelize-ts'

const bar: Camelize<{ foo?: string[] }[]> = [
  {
    foo: ['abc'],
  },
]

bar.map((baz) => baz.foo?.map((x) => x))
// 1. This expression is not callable. (<- it's referring to baz.foo.map not the bar.map call.)
//     Type 'CamelizeObject<(<U>(callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]), false>' has no call signatures. [2349]

Expected Behavior:
The map method should work as expected, allowing access to the foo property and its elements (if I remove the optional marker in the generic then things do work as expected i.e. Camelize<{ foo:string[] }[]>)

Actual Behavior:
The TypeScript compiler raises an error, stating: "This expression is not callable. Type 'CamelizeObject<((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]), false>' has no call signatures."

Additional Information:

  • Library Version: 3.0.0
  • TypeScript Version: 5.2.2

Note:
This issue affects the usability of the library when working with optional nested arrays, and a solution or workaround would be greatly appreciated.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions