Typescript 第三个库函数的换行类型定义

Typescript 第三个库函数的换行类型定义,typescript,typescript-typings,typescript-generics,Typescript,Typescript Typings,Typescript Generics,我使用Typescript来强制实现不变性。大多数库不会将其导出的函数参数键入为Readonly(或DeepReadonly),即使它们没有对其进行变异。这会导致一个常见问题,因为ReadonlyArray不能作为数组分配 如前所述,我们可以使用模块扩充来重新定义函数。但我们如何包装现有的类型定义,所以我们使用当前定义,但将所有参数定义为DeepReadonly 我想你可以用这个通用的: 导出类型DeepReadonlyObject -------------编辑---------------

我使用Typescript来强制实现不变性。大多数库不会将其导出的函数参数键入为
Readonly
(或
DeepReadonly
),即使它们没有对其进行变异。这会导致一个常见问题,因为
ReadonlyArray
不能作为
数组分配

如前所述,我们可以使用模块扩充来重新定义函数。但我们如何包装现有的类型定义,所以我们使用当前定义,但将所有参数定义为
DeepReadonly

我想你可以用这个通用的:

导出类型DeepReadonlyObject

-------------编辑---------------

您可以通过
声明模块“Lib”{
语法覆盖导入的类型。但是在模块定义中,我们不能使用迭代。因此,恐怕您必须手动声明每个键,例如

模块“Lib”{
导出常量值={key:42};
export const value1={key:42};
}
声明模块“Lib”{
导出类型值=DeepReadonlyObject;
}

不幸的是,每个密钥都必须放在声明的模块中。

我认为您可以使用以下通用方法:

导出类型DeepReadonlyObject

-------------编辑---------------

您可以通过
声明模块“Lib”{
语法覆盖导入的类型。但是在模块定义中,我们不能使用迭代。因此,恐怕您必须手动声明每个键,例如

模块“Lib”{
导出常量值={key:42};
export const value1={key:42};
}
声明模块“Lib”{
导出类型值=DeepReadonlyObject;
}

不幸的是,每个键都必须放在声明的模块中。

我知道DeepReadonly。这里的挑战是包装/扩充第三个库类型定义的类型。我知道DeepReadonly。这里的挑战是包装/扩充第三个库类型定义的类型。