A continuación, esperaría que esto fallara, ya que dije que afternoon debería ser del tipo number , pero no falla.
Supongo que estoy desestructurando incorrectamente, ya que al pasar el mouse sobre la palabra afternoon cuando regresa, se muestra el tipo como any (en VS Code).
Alternativamente, todo podría estar mal, este es literalmente mi primer juego con Typescript, ¡todavía no lo entiendo!
const greetings = { morning: "Good morning.", evening: "Good evening.", afternoon: "Good afternoon.", }; interface AboutGreetingTypes { morning: string, evening: string, afternoon: number, }; const aboutGreeting = ({copy}): AboutGreetingTypes => { const d = new Date(); const timeInHours = d.getHours(); const { morning, evening, afternoon } = copy; if (timeInHours < 12) { return morning; } if (timeInHours > 18) { return evening; } if (timeInHours > 12) { return afternoon; } }; console.log(aboutGreeting({copy: greetings}));El tipo de parámetro de su función debe ser {copy: AboutGreetingTypes} no solo AboutGreetingTypes
const aboutGreeting = ({copy}): AboutGreetingTypes => { Esta línea declara una función que acepta un solo objeto sin tipo y devuelve AboutGreetingTypes . Dado que el argumento no tiene un tipo declarado, se supone que es any , lo que le permite hacer cualquier cosa sin un error de tipo.
Lo que creo que desea es una función que acepte un objeto que tenga una propiedad de copy que tenga el valor de AboutGreetingTypes .
Eso se vería así:
const aboutGreeting = ({ copy }: { copy: AboutGreetingTypes }) => {Vea el patio de recreo que todavía tiene algunos errores, pero los que los resuelven son respuestas a diferentes preguntas.