¿Tiene sentido usar `export` dentro de un archivo` d.ts`?
Estoy intentando crear un archivo para los tipos que se utilizan globalmente en mi aplicación.
reduxState.d.ts
declare namespace MyProject {
  type Type1 = someType;
  interface SomeInterface {
    someProperty: someType
  }
}
 
    Con el código anterior, ya puedo ver mi namespacey sus miembros disponibles en mis archivos de proyecto.
Entonces, ¿cuál es la diferencia entre el código anterior y el siguiente código que se usa exportpara los namespacemiembros?
declare namespace MyProject {
  export type Type1 = someType;
  export interface SomeInterface {
    someProperty: someType
  }
}
 
    Ambos parecen funcionar bien. ¿Cuál es la diferencia?
Desde: https://www.typescriptlang.org/docs/handbook/namespaces.html#namespacing
Como queremos que las interfaces y clases aquí sean visibles fuera del espacio de nombres, las introducimos con export.
En este extracto del DOC, parece que se refieren a namespaceque se declara dentro de tsun d.tsarchivo y no a . ¿Es por eso que necesita el exporten ese caso?
¿Tiene exportalgún sentido usarlo dentro de un d.tsarchivo?
Respuestas
*.d.tsLos archivos son por definición, se ignoran por completo en tiempo de ejecución. Si escribe código JS porque tiene una biblioteca o algo así, le recomiendo usar la palabra clave export, porque esto hace que sea mucho más fácil para otros usuarios ver lo que podrán usar de su código (algo que usted no exportar, no se puede importar a otro lugar obviamente).
Ahora su caso de uso: todo lo que se exporta desde un namepsace, se puede usar fuera de forma independiente. Lo que significa que podrías hacer algo como
const obj: MyProject.SomeInterface = { someProperty: 20 };
 
     Dado que está utilizando *.d.tsarchivos y no *.tsarchivos, no hará ninguna diferencia para usted siempre que solo exporte interfaces, ya que de todos modos se omitirán en tiempo de compilación.
Una última nota: los *.d.tsarchivos te permiten ver tus cosas en todo el proyecto, pero si planeas importar funciones o similares desde allí, obviamente debes importarlas primero.