string]: HostConfig }
links: Record<string, HostValues>
cookies: Record<string, { name: string, expires: number }>
sentry: { on: boolean, dsn: string }
}
const configuration = {
// implementation omitted
} as const
const value = configuration.api
Если я присваиваю константе configuration тип Configuration, то интеллисенс перестаёт доставкать из поля api ключи.
Если я тип Configuration не присваиваю, то интеллисенс работает, но в поле api я могу закинуть что угодно.
Можно каким либо образом обоих зайцев убить?
Не знаю, насколько правильно. Но вроде работает type ValueOrNever<TValue, TInterface> = TValue extends TInterface ? TValue : never export const globalConfig: ValueOrNever<typeof configuration2 Configuration> = configuration
Ты хочешь, чтобы у api индексатором был не string, а юнион строк. Для этого Configuration должен стать дженерик-типом
Обсуждают сегодня