Typescript:从{}扩展

Typescript:从{}扩展,typescript,Typescript,鉴于: A类{ 私人型号:T 构造函数(模型:T={}){ this.model=model } } 为什么我在声明时出错 类型“{}”不可分配给类型“T” {}不是可分配给 {[k:string]:any} 谢谢。这是一个正确的错误 你的班级说这个代码是合法的: class A<T extends { [k: string]: any }> { private model: T constructor(model: T = {}) { this.model

鉴于:

A类{
私人型号:T
构造函数(模型:T={}){
this.model=model
}
}
为什么我在声明时出错

类型“{}”不可分配给类型“T”

{}不是可分配给

{[k:string]:any}


谢谢。

这是一个正确的错误

你的班级说这个代码是合法的:

class A<T extends {
  [k: string]: any
}> {
  private model: T

  constructor(model: T = {}) {
    this.model = model
  }
}
类型MyType={
a:弦;
b:数字;
}
常数c=新的A();
但是现在您有了一个
A
,它的
model
值没有所需的
A
b
属性。

此问题已被描述。解决这个问题的办法如下

type MyType = {
    a: string;
    b: number;
}

const c = new A<MyType>();

你也可以读到它有关于类似问题的链接和讨论。

这感觉像是一个bug。你检查过typescript问题列表了吗?约束是下限,而不是上限。是的,我在尝试解决它时注意到了这一点。但我认为这不应该是答案,因为为什么{}首先不能分配给{[k:string]?:any}。我已经用lnks编辑了github关于这个案例的问题
class A<T extends {
    [k: string]: any
}> {
    private model: T

    constructor(model: T = <T>{}) {
        this.model = model
    }
}
var instA = new A();
// instA.model will be {}