Typescript Mixins 在编译器中无法正常工作
Typescript Mixins not working as intended in the compiler
所以我有一个 class 和用相同名称声明的接口。
declare module "mongoose"
{
class Schema<T = any>
{
constructor(definition?: SchemaDefinition);
}
interface Schema<T = any>
{
new(definition?: TypedSchemaDefinition<T>): Schema<T>;
}
}
假设 TypedSchemaDefinition
只是将类型参数 props 转换为它们的 运行 时间对应物。为了简单起见,我不会包括所有实现此功能的代码,除非它是必需的。
示例道具:编译类型=> 运行时间类型&字符串=>字符串&数字=>数字等...
这应该不会引发错误。
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
作为函数的有效参数。如果这是一个错误,那么有解决办法吗??
只需删除 .vs 文件并将该文件添加到类型根目录中即可修复 typescript 模块 IntelliSense。
所以我有一个 class 和用相同名称声明的接口。
declare module "mongoose"
{
class Schema<T = any>
{
constructor(definition?: SchemaDefinition);
}
interface Schema<T = any>
{
new(definition?: TypedSchemaDefinition<T>): Schema<T>;
}
}
假设 TypedSchemaDefinition
只是将类型参数 props 转换为它们的 运行 时间对应物。为了简单起见,我不会包括所有实现此功能的代码,除非它是必需的。
示例道具:编译类型=> 运行时间类型&字符串=>字符串&数字=>数字等...
这应该不会引发错误。
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
作为函数的有效参数。如果这是一个错误,那么有解决办法吗??
只需删除 .vs 文件并将该文件添加到类型根目录中即可修复 typescript 模块 IntelliSense。