1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
// @lib: es5
// @sourcemap: true
declare var console: {
log(msg: string): void;
}
interface Robot {
name: string;
skills: {
primary?: string;
secondary?: string;
};
}
var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } };
function foo1(
{
skills: {
primary: primaryA = "primary",
secondary: secondaryA = "secondary"
} = { primary: "SomeSkill", secondary: "someSkill" }
}: Robot = robotA) {
console.log(primaryA);
}
function foo2(
{
name: nameC = "name",
skills: {
primary: primaryB = "primary",
secondary: secondaryB = "secondary"
} = { primary: "SomeSkill", secondary: "someSkill" }
}: Robot = robotA) {
console.log(secondaryB);
}
function foo3({ skills = { primary: "SomeSkill", secondary: "someSkill" } }: Robot = robotA) {
console.log(skills.primary);
}
foo1(robotA);
foo1({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } });
foo2(robotA);
foo2({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } });
foo3(robotA);
foo3({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } });
|