Итак, у меня есть класс и интерфейс, объявленные с тем же именем.
declare module "mongoose"
{
class Schema<T = any>
{
constructor(definition?: SchemaDefinition);
}
interface Schema<T = any>
{
new(definition?: TypedSchemaDefinition<T>): Schema<T>;
}
}
Предположим, что TypedSchemaDefinition
просто преобразует реквизиты параметра типа в их аналог во время выполнения. Я не собираюсь включать весь код, который выполняет эту функцию для простоты, за исключением случаев, когда это требуется.
Пример процедуры: тип компиляции => тип среды выполнения & string => String & number => Number et c ...
Это не должно выдавать ошибку.
interface ShippingCompileType {
days: number,
price: number,
}
const ShippingRuntimeType: TypedSchemaDefinition<ShippingCompileType> = {
days: Number,
price: Number,
}
const ShippingSchema = new Schema(ShippingRuntimeType);
Error: TypedSchemaDefinition<ShippingCompileType> is not assignable to SchemaDefinition
Я не знаю, является ли это ошибкой или предполагаемой функцией, потому что слияние миксинов и объявлений должно объединить два тип конструктора и разрешить ShippingRuntimeType
в качестве допустимого параметра функции. Если это ошибка, то есть ли работа вокруг?