Skip to content

Unused type argument in FieldArrayRenderProps #173

Open
@dominikdosoudil

Description

@dominikdosoudil

Are you submitting a bug report or a feature request?

TS typing dead code

What is the current behavior?

interface FieldArrayRenderProps requires 2 generic arguments however the second one is unused.

What is the expected behavior?

interface FieldArrayRenderProps requires only one generic argument which represents value type.

Sandbox Link

https://codesandbox.io/s/react-final-form-field-arrays-forked-7wuwcb?file=/index.tsx

What's your environment?

    "final-form": "4.20.7",
    "final-form-arrays": "3.0.2",
    "react": "16.8.6",
    "react-dom": "16.8.6",
    "react-final-form": "6.5.9",
    "react-final-form-arrays": "3.1.4"

Other information

When you take a look at the interface, the second type argument is never used. Therefore it's useless. I think that it should be removed however it would be breaking change since the generic interface might be already used with 2 arguments in other projects. Removing the second type argument would cause error TS2314: Generic type 'FieldArrayRenderProps ' requires 1 type argument(s)..

export interface FieldArrayRenderProps<FieldValue, T extends HTMLElement> {
  fields: {
    forEach: (iterator: (name: string, index: number) => void) => void
    insert: (index: number, value: FieldValue) => void
    map: <R>(iterator: (name: string, index: number) => R) => R[]
    move: (from: number, to: number) => void
    update: (index: number, value: FieldValue) => void
    name: string
    pop: () => FieldValue
    push: (value: FieldValue) => void
    remove: (index: number) => FieldValue
    shift: () => FieldValue
    swap: (indexA: number, indexB: number) => void
    unshift: (value: FieldValue) => void
    value: FieldValue[]
  } & FieldState<FieldValue[]>
  meta: Partial<{
    // TODO: Make a diff of `FieldState` without all the functions
    active: boolean
    dirty: boolean
    dirtySinceLastSubmit: boolean
    error: any
    initial: any
    invalid: boolean
    pristine: boolean
    submitError: any
    submitFailed: boolean
    submitSucceeded: boolean
    touched: boolean
    valid: boolean
    visited: boolean
  }>
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions