Расширение импортированных пространств имен в TypeScript: объединение объявлений пространств имен

В TypeScript вы не можете напрямую расширить импортированное пространство имен. Однако вы можете добиться аналогичной функциональности, объединив импортированное пространство имен с новым объектом с помощью слияния объявлений. Вот пример:

// File1.ts
namespace MyNamespace {
  export function foo() {
    console.log("foo");
  }
}
// File2.ts
import { MyNamespace } from "./File1";
namespace MyNamespace {
  export function bar() {
    console.log("bar");
  }
}
// Usage
MyNamespace.foo(); // Output: "foo"
MyNamespace.bar(); // Output: "bar"

В приведенном выше примере MyNamespaceопределяется в File1.ts, а затем расширяется в File2.tsс использованием слияния объявлений. Это позволяет добавлять новые функции или свойства в существующее пространство имен.