¿Es posible obtener un tipo de unión de cadena literal de una matriz estática de la propiedad específica del objeto?
Por ejemplo, quiero exponer IconName como un tipo de cadenas literales de las que se infiere a partir de una matriz de objetos.
He visto que se ha hecho para convertir una matriz de solo lectura en una unión literal de cadena, pero no a través de una matriz de objetos.
No creo que sea posible ya que requerimos alguna funcionalidad interpretativa en tiempo de ejecución para acceder a los valores de la matriz. Pero aquí está el ejemplo que estoy tratando de trabajar a través de este ejemplo esbelto https://codesandbox.io/s/svelte-typescript-forked-ef75y :
<script lang="ts"> interface Icon { name: string color: string } const icons: readonly Icon[] = <const>[ { name: "close", color: "red" }, { name: "open", color: "blue" } ]; const tuple = <K extends string[]>(...arr: K) => arr; const iconNames = tuple(...icons.map(i => i.name)); type IconName = typeof iconNames[number]; export let name: IconName; let displayIcon = icons.find((e) => e.name === name); </script> <h1>{displayIcon.color}</h1>