I have code similar to the following:
export type Bar = {
baz: number
};
export type FooConstructorArguments = {
config: Bar
};
class Foo {
construction({
config: {
baz = 1
}
}: FooConstructorArguments) {
let c = config;
let b = baz;
}
}
But neither config nor baz are accessible. What is the proper way to utilize nested typed argument defaults within TypeScript?
CodePudding user response:
baz is accessible. config isn't because it's just part of the destructuring path to baz, not a target of the destructuring pattern. If you want both config and baz, you'll need to just pick out config in the parameter list, then pick baz from it after:
class Foo {
construction({ config }: FooConstructorArguments) {
const { baz = 1} = config;
let c = config;
let b = baz;
}
}
or if you don't really need baz and just need b:
class Foo {
construction({ config }: FooConstructorArguments) {
let c = config;
let b = config.baz ?? 1;
}
}
Side note: I've left construction in the above in case it's meant to be a method, but suspect you meant constructor.
