Typescript Mixins 在编译器中无法按预期工作

Posted

技术标签:

【中文标题】Typescript Mixins 在编译器中无法按预期工作【英文标题】:Typescript Mixins not working as intended in the compiler 【发布时间】:2020-05-01 17:47:59 【问题描述】:

所以我声明了一个同名的类和接口。

declare module "mongoose"

  class Schema<T = any>
  
    constructor(definition?: SchemaDefinition);
  
  interface Schema<T = any>
  
    new(definition?: TypedSchemaDefinition<T>): Schema<T>;
  

假设TypedSchemaDefinition 只是将类型参数道具转换为它们的运行时对应物。为了简单起见,我不会包含所有实现此功能的代码,除非需要。

示例道具:编译类型 => 运行时类型 & 字符串 => 字符串 & 数字 => 数字等...

这不应引发错误。

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

我不知道这是错误还是预期的功能,因为 mixins 和声明合并应该合并两个构造函数类型并允许 ShippingRuntimeType 作为函数的有效参数。如果这是一个错误,那么有解决方法吗??

【问题讨论】:

【参考方案1】:

只需删除 .vs 文件并将该文件添加到类型根目录中即可修复 typescript 模块 IntelliSense。

【讨论】:

以上是关于Typescript Mixins 在编译器中无法按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

中继编译器无法在 Typescript 中提取和使用 graphql 查询

无法在 Visual Studio 2012 中编译 TypeScript 文件

Typescript编译器无法从Promise resolve调用中推断类型

无法在带有打字稿的 vue 中使用 Mixins

Angular 无法编译 Typescript 的映射类型修饰符

Sass 不会将 mixins 和变量编译成 css