У меня проблемы с расширением интерфейсов сторонних библиотек по всему миру, так как импорт других файлов на корневом уровне приведет к тому, что файл объявления больше не будет глобальным.
Вот пример:
Я бы хотел добавить свойство "user" типа "MyUser" в объект запроса Express.Если бы это было типа MyUser, я мог бы просто сделать следующее:
declare namespace Express {
interface Request {
user: string;
}
}
и затем где-нибудь еще:
...
function(..., req: Request, ...) {
...
req.user; //its a string
...
}
и все будет работать отлично.Однако выполнение следующих действий не работает:
import MyUser from "../../src/types/MyUser";
declare namespace Express {
interface Request {
user: MyUser;
}
}
, поскольку теперь у меня есть импорт верхнего уровня.Нет ли способа избежать этого?Какой смысл в том, чтобы объединять объявления, если вы даже не можете использовать в них свои собственные типы?