2022-08-29 13:49:01 +03:00
|
|
|
// In a typed function call, argument expressions are contextually typed by their corresponding parameter types.
|
2021-01-15 13:30:44 +03:00
|
|
|
function foo({x: [a, b], y: {c, d, e}}) { }
|
|
|
|
function bar({x: [a, b = 10], y: {c, d, e = { f:1 }}}) { }
|
|
|
|
function baz(x: [string, number, boolean]) { }
|
|
|
|
|
|
|
|
var o = { x: ["string", 1], y: { c: true, d: "world", e: 3 } };
|
|
|
|
var o1: { x: [string, number], y: { c: boolean, d: string, e: number } } = { x: ["string", 1], y: { c: true, d: "world", e: 3 } };
|
|
|
|
foo(o1); // Not error since x has contextual type of tuple namely [string, number]
|
|
|
|
foo({ x: ["string", 1], y: { c: true, d: "world", e: 3 } }); // Not error
|
|
|
|
|
|
|
|
var array = ["string", 1, true];
|
|
|
|
var tuple: [string, number, boolean] = ["string", 1, true];
|
|
|
|
baz(tuple);
|
|
|
|
baz(["string", 1, true]);
|
|
|
|
|
|
|
|
baz(array); // Error
|
|
|
|
baz(["string", 1, true, ...array]); // Error
|
|
|
|
foo(o); // Error because x has an array type namely (string|number)[]
|