javascript - Exportación de definiciones de tipos mecanografiados

CorePress2024-01-25  7

En mi proyecto me gustaría tener un archivo con todas las definiciones mecanografiadas así:

type_defs.tsx:

interface T_oauth_obj {
    oauth_callback: string,
    oauth_consumer_key: string,
    oauth_nonce: string,
    oauth_signature_method: string,
    oauth_timestamp: string,
    oauth_version: number,
    oauth_signature: string,
}

interface IAuthRequests {
    getRequestToken: () => string
    Authorize(): void
    getAccessToken(): void  
}
...

El problema es que cuando intento exportar los typedefs así:

export {IAuthRequests, T_oauth_obj}

Recibo el error:

Re-exporting a type when the '--isolatedModules'...

Como descubrí en la red, solo puede existir la exportación predeterminada para un archivo typedef, lo que significa que tengo que preparar un archivo por definición de tipo, ¡lo cual es absolutamente absurdo!

En mi opinión, la restricción que no permite tener múltiples exportaciones no predeterminadas para typedefs es totalmente absurda y hace que la codificación sea redundante y difícil de reutilizar. Tener un archivo con todos los typedefs puede ayudar a tener un código más ordenado y con capacidad de depuración.

P.D.

¿Existe alguna manera de lograr el objetivo del que estoy hablando?



------------------------------------

Intenta así:

export interface T_oauth_obj {
    oauth_callback: string,
    oauth_consumer_key: string,
    oauth_nonce: string,
    oauth_signature_method: string,
    oauth_timestamp: string,
    oauth_version: number,
    oauth_signature: string,
}

export interface IAuthRequests {
    getRequestToken: () => string
    Authorize(): void
    getAccessToken(): void  
}

y luego importar:

import { T_oauth_obj, IAuthRequests } from "your.file"

1

Gracias, eso funciona, pero ¿POR QUÉ no puedo usar la sintaxis de exportación {IAuthRequests, T_oauth_obj}?

-Daros911

27/03/2021 a las 15:27



------------------------------------

Sus tipos exportados pueden tener un nombre o cada archivo puede tener un tipo de exportación predeterminado. La palabra clave export simplemente no permite exportar múltiples valores.

Entonces, dado que solo funciona para un valor o tipo a la vez, esto no funcionará porque {IAuthRequests, T_oauth_obj} no es un tipo único válido.

Podrías realizar una exportación predeterminada de un tipo completo, pero probablemente esto no sea lo que deseas:

export default { req: IAuthRequests, oauth: T_oauth_obj }

O podrías hacer:

export interface IAuthRequests { ... }
export interface T_oauth_obj { ... }

Si desea que una palabra clave de exportación exporte varios tipos con nombre, no tengo otra ayuda que decirle que simplemente no hace eso. Para responder por qué probablemente tendrás que preguntarle a los mantenedores del texto mecanografiado. Es probable que la respuesta sea una elección deliberada de diseño que se ajuste más a cómo exobras portuarias es JS simple.

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare