así que he estado trabajando con React y TypeScript este año y me di cuenta de lo difícil que puede ser en algún momento poder escribir algunos objetos complejos. por lo tanto, me preguntaba si podría haber una forma o una función auxiliar a la que pudiéramos llamar con un objeto y poder devolver una interfaz mecanografiada o un tipo de respuesta que luego podríamos usar para escribirlo en nuestro código y usarlo como un type para cada vez que estemos usando el objeto.
Ejemplo: digamos que tenemos un objeto como tal:
const complexObject = { "hsl": { "h": 118.48101265822783, "s": 1, "l": 0.5, "a": 1 }, "hex": "#06ff00", "rgb": { "r": 6, "g": 255, "b": 0, "a": 1 }, "hsv": { "h": 118.48101265822783, "s": 1, "v": 1, "a": 1 }, "oldHue": 118.48101265822784 } como puede ver, escribir este objeto puede ser algo problemático, especialmente para los desarrolladores sin experiencia como yo. ahora, si pudiera haber una biblioteca a la que pudiéramos llamar en este contexto getType , entonces podríamos hacer algo como esto:
getType(complexObject); // return type complexObject = { hex: string; hsl: { h: number; s: number; l: number; a: number }; hsv: { h: number; s: number; v: number; a: number }; rgb: { r: number; g: number; b: number; a: number }; };Si solo desea usar un tipo en un archivo de la forma en que escribió getType arriba, use typeof como en la respuesta de Ozan . Aunque typeof funciona en tiempo de ejecución para devolver una cadena en JavaScript estándar, TypeScript le da un significado adicional a typeof : en una expresión de tipo le permite reutilizar el tipo de un identificador existente.
// Runs in the emitted JavaScript. const someValue = typeof complexObject; // "object" // Type only: not emitted to JavaScript. type SomeType = typeof complexObject; // { hsl: { ... }, ... } // Type only as well, because it's after the : so TS reads it as a type. const typedValue: typeof complexObject = getComplexObject(); // field name: type expression = initial value Recuerde, los tipos no existen en tiempo de ejecución, por lo que nunca existe la posibilidad de que pueda devolver un tipo como un valor de tiempo de ejecución o una expresión de retorno de función como getType . Una función como getType podría devolver un valor y ese valor podría tener un tipo útil, pero no puede devolver el tipo en sí mismo con una función.
Nota al margen: si está tratando de escribir un archivo de declaración basado en el código JavaScript existente, o si desea llegar a la definición de la interfaz para poder copiarla y pegarla en su propio código, una herramienta estándar para eso es dts-gen .
No necesita una función como getType para recuperar el tipo como una variable y reutilizarlo en su código.
Todo lo que necesita hacer es usar el operador typeof y asignar ese valor a una variable de type .
type ComplexObjectType = typeof complexObject; Ahora, puede usar ComplexObjectType como un tipo para otras variables en su proyecto.