Me gustaría usar keyof para describir los parámetros de una función, en función de un campo opcional en un Objeto. Y me gustaría agregar un valor predeterminado.
interface foo { bar?: { opt1: string, opt2: string } } function func(option: keyof foo["bar"] = "opt1") ... Pero como la bar es opcional, obtuve Type 'string' is not assignable to type 'never'
Puedes deshacerte de la posibilidad de undefined usando NonNullable :
function func(option: keyof NonNullable<foo["bar"]> = "opt1") Tenga en cuenta que lo anterior también eliminará la posibilidad de null , que puede o no ser deseado. Otra opción es que podría usar Exclude , que es más detallado pero le brinda más flexibilidad:
function func(option: keyof Exclude<foo["bar"], undefined> = "opt1")Para obtener más información sobre estos tipos de utilidades, consulte esta página:https://www.typescriptlang.org/docs/handbook/utility-types.html