Я думаю, вы можете использовать этот шаблон c:
export type DeepReadonlyObject<A> = { readonly [K in keyof A]: DeepReadonlyObject<A[K]> };
Он сопоставляет все атрибуты с readonly
, а все значения с DeepReadonlyObject
значениями рекурсивно.
Детская площадка
------------- Отредактировано ---------------
Вы можете перезаписать импортированные типы по синтаксису declare module "Lib" {
. Однако в определении модуля мы не можем использовать итерации. Поэтому я боюсь, что вы должны объявлять каждый ключ вручную, например
module "Lib" {
export const value = { key: 42 };
export const value1 = { key: 42 };
}
declare module "Lib" {
export type value = DeepReadonlyObject<typeof Lib.value>;
}
К сожалению, каждый ключ должен быть помещен в объявленный модуль.