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