Effect CommunityEC
Effect Community2y ago
6 replies
Patrick Roza

ATRSettings Default Value Issue

why was this an issue again (class constructor error when trying to create while omitting an optional exact property with default)?
export class ATRSettings extends S.Class<ATRSettings>()({}) {}

const Test = S.struct({
  id: S.string,
  atrSettings: S.optional(ATRSettings, {
    exact: true,
    default: () =>
      new ATRSettings({
        period: 10,
        multiplier: 2.8
      })
  })
})

const m = S.decodeSync(Test)({ id: "a" })

export class GetSignalChartFlexibleATRRequest extends S.Class<GetSignalChartFlexibleATRRequest>()({
  id: S.string,
  atrSettings: S.optional(ATRSettings, {
    exact: true,
    default: () =>
      new ATRSettings({
        period: 10,
        multiplier: 2.8
      })
  })
}) {}

const a = new GetSignalChartFlexibleATRRequest({ id: "a" })
                                                  ^Argument of type '{ id: string; }' is not assignable to parameter of type '{ readonly id: string; readonly atrSettings: ATRSettings; }'.
  Property 'atrSettings' is missing in type '{ id: string; }' but required in type '{ readonly id: string; readonly atrSettings: ATRSettings; }'.
(unless you comment out the
default
)
Was this page helpful?