Skip to content

Unintuitive behavior for arrays of objects #2487

@pnachum

Description

@pnachum
type Foo = { foo: number };
type FooBar = { foo: number, bar: number };

function doSomething(obj: Foo) {
}
function doSomethingElse(objs: Foo[]) {
}

const typedFooBar: FooBar = { foo: 1, bar: 2 };
const typedFooBars: FooBar[] = [
  { foo: 1, bar: 2 },
  { foo: 3, bar: 4 },
];

const untypedFooBar = { foo: 1, bar: 2 };
const untypedFooBars = [
  { foo: 1, bar: 2 },
  { foo: 3, bar: 4 }, 
];

// These work
doSomething({ foo: 1, bar: 2 });
doSomething(untypedFooBar);
doSomething(typedFooBar);
doSomethingElse([
  { foo: 1, bar: 2 },
  { foo: 3, bar: 4 },
]);
doSomethingElse(untypedFooBars);

// This doesn't work
doSomethingElse(typedFooBars)

or in the online editor:
https://flowtype.org/try/#0PQKgBAAgZgNg9gdzCYAoVAXAngBwKZgBiccYAvGAN5hQkBcYAdgK4C2ARngE5gC+A3JlwFicAEIBDHhWq04DFh24AaMOykK2nHgPRRmjAMYYAlnEZgAJnADKcVngwALE4wDmACjjsAVg1EAlFSovKj6RqbmVrb2ji7uAKIwAM54Xr7J-iQA2gC6QZQh6IbmyRhg2PiWopJcWeJS5FQ09GAAjKrqdWAATHyCJYxlFcLVJLWZRONSeU3ZqGDNcgwdahq9fMoLS60AzJ3rACybqLmCqIPDBpV4Yw3SO-LtB919upfl16M1Uslz27JWqsugw3ltFoCnvs1t1jrxVKdzsBgGAACpOPCpMAIOBcADWqGsdgczlcnkhKxeoL4AUERNipPcHi+VR+XFphJiJPinhud1qHPp3LJSVSHnmEJaT2B6zBAKlDGhILAcK2+TpXLiIpSaRZtzZyQ5qGRaJcf2smMYAHJyjj8ZziVrEjqPHyDQEgA

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions