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 {}