Error while trying to destructure an array of possible length 2 Error while trying to destructure an array of possible length 2 typescript typescript

Error while trying to destructure an array of possible length 2


You've not declared message as an array; you've declared it as a tuple ([string]) and tuples have a fixed number of elements. (See the Tuple section in the Basic Types documentation.)

You could declare it as a tuple that has two string elements ([string, string]), but given that you are testing message.length >= 2 it seems likely you intended to declare it as a string array (string[]):

let output = {status: false};if(execute.permission) {    let message: string[] = execute.params;    if(message.length >= 2) {        // Destructuring follows        [output['position'], output['message']] = message;    }}


Use string[] (an array of any length) instead of [string] (a "tuple" limited to length 1) as your type.

Tuples have a specific length and make it easier to represent multiple types assigned to specific index positions, like [string, number]. Homogenous (single-type) tuples are still useful in some scenarios (such as representing pairs in a map), but are not as common.

Arrays, on the other hand, are lists of variable length but are designed to hold only references of a single type (even if that type is a union type or any). If one index of any array can hold a certain value, every index can hold that same kind of value.


TypeScript Code (Playground Link)

let execute = { permission: true, params: ['a', 'b']}let output = { status: false };    if(execute.permission) {        let message: string[] = execute.params;        if(message.length >= 2) {            // Destructuring follows            [output['position'], output['message']] = message;        }}console.log(output)


Try to change type of message variable. Array of strings suits better than array with single string

let message: string[] = execute.params;