8000 Assign tuple to object: Number is not assignable to type literal · Issue #24680 · microsoft/TypeScript · GitHub
[go: up one dir, main page]

Skip to content
Assign tuple to object: Number is not assignable to type literal  #24680
Closed
@mstn

Description

@mstn

TypeScript Version: 3.0.0-dev.20180602

Search Terms:

number is not assignable with type literal, tuple assigned to object, fixed size tuples

Code

// Type Error: number is not assignable with type 2
let p0: { length: 2 } = [1, 2]; 
// ok
let p1: { length: 2, 0: number } = [1, 2]
// ok
let p2: { 0: number } = [1, 2]

Expected behavior:

After that, [number, number] type should be equivalent to:

interface Tuple extends Array<number> {
    0: number;
    1: number;
    length: 2;
}
let t: Tuple = [1, 2];
// no syntax error
let obj: { length: 2 } = t;

Hence, I would expect let p0: { length: 2 } = [1, 2]; to be correct.

Please not that let p1: { length: 2, 0: number } = [1, 2]; is allowed.

Actual behavior:

let p0: { length: 2 } = [1, 2]; is not correct and gives error Number is not assignable to type 2.

Playground Link:

Playground snippet

Metadata

Metadata

Assignees

No one assigned

    Labels

    Working as IntendedThe behavior described is the intended behavior; this is not a bug

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0