lo que estoy tratando de lograr aquí es poder usar la función de una manera que si:
proporcionó argumentos, funciona con los argumentos proporcionados, sin embargo, si no se proporcionaron argumentos, usaría los valores predeterminados .
el problema que tengo es que el siguiente código no tiene un error de mecanografiado, pero en tiempo de ejecución, cuando se llama a la función como testingInterfacesFunction(), aparece este error:
No se pueden leer las propiedades de undefined (leyendo 'título')
interface Success { onSuccess: (x: any) => void | null successTitle: string successSubtitle: string successIcon: "success" | "info" | "error" | "question" | "warning" } interface Denial { onDenied: (x: any) => void | null denialTitle: string denialSubtitle: string denyIcon: "success" | "info" | "error" | "question" | "warning" } interface Dismiss { onDismissed: (x: any) => void dismissTitle: string dismissSubtitle: string dismissIcon: "success" | "info" | "error" | "question" | "warning" } interface Extra { confirmButton: string cancelButton: string focus: boolean } interface Params { title: string subTitle: string icon: "success" | "info" | "error" | "question" | "warning" success: Success deny: Denial dismiss: Dismiss extra: Extra } const testingInterfacesFunction = (params: Params) => { const { title = "", subTitle = "", icon = "question", success: { onSuccess = null, successTitle = "", successSubtitle = "", successIcon = "success" }, deny: { onDenied = null, denialTitle = "", denialSubtitle = "", denyIcon = "error" }, dismiss: { onDismissed = null, dismissTitle = "", dismissSubtitle = "", dismissIcon = "error" }, extra: { confirmButton = "done", cancelButton = "cancel", focus = false } } = params ... the body of the function ... }incluso intenté consolar. registrar el título , pero parece que el código no reacciona en absoluto al cuerpo de la función...
todo lo que quiero hacer es tener una función que acepte opcionalmente estas propiedades, mientras que si no se proporciona, usa los valores predeterminados, ¿cómo puedo lograr tal cosa?
si desea un valor predeterminado, debe hacer la destrucción en los argumentos de la función
You can use "defaults" in destructuring as well: (function test({a = "foo", b = "bar"} = {}) { console.log(a + " " + b); })(); This is not restricted to function parameters, but works in every destructuring expression.Algo como esto:
const testingInterfacesFunction = (params: { title = "", subTitle = "", icon = "question", success: { onSuccess = null, successTitle = "", successSubtitle = "", successIcon = "success" }, deny: { onDenied = null, denialTitle = "", denialSubtitle = "", denyIcon = "error" }, dismiss: { onDismissed = null, dismissTitle = "", dismissSubtitle = "", dismissIcon = "error" }, extra: { confirmButton = "done", cancelButton = "cancel", focus = false } }) => Params { ... the body of the function ... } testingInterfacesFunction( {title: "aTitle", icon:"anIcon"} )Si desea que los elementos individuales predeterminados sean exitosos o descartados, debe desestructurarlos con código adicional.