46 lines
1.3 KiB
TypeScript
46 lines
1.3 KiB
TypeScript
// @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" } });
|