Typescript,类类型不可分配给索引接口

Typescript,类类型不可分配给索引接口,typescript,typescript-typings,Typescript,Typescript Typings,我有一个类,它有一些公共属性,我想把它传递给一个具有索引接口类型的泛型参数的函数,但是我得到一个编译器错误,它说'Car'类型的参数不能分配给'{[k:string]:unknown;}类型的参数。 有人能解释一下什么是错的,因为我假设所有的类都是object类型的 等级车{ 名称:字符串|未定义; } 函数toStr(i:T){ 返回i.toString(); } 康斯特吉普=新车(); jeep.name='jeep'; toStr(吉普车); 只需使用对象代替{[k:string]:unk

我有一个类,它有一些公共属性,我想把它传递给一个具有索引接口类型的泛型参数的函数,但是我得到一个编译器错误,它说'Car'类型的
参数不能分配给'{[k:string]:unknown;}类型的参数。

有人能解释一下什么是错的,因为我假设所有的类都是object类型的

等级车{
名称:字符串|未定义;
}
函数toStr(i:T){
返回i.toString();
}
康斯特吉普=新车();
jeep.name='jeep';
toStr(吉普车);

只需使用
对象
代替
{[k:string]:unknown}

等级车{
名称:字符串|未定义;
}
函数toStr(i:T){
返回i.toString();
}
康斯特吉普=新车();
jeep.name='jeep';
const result=toStr(吉普);

Car
未定义索引签名,但函数参数对其有约束。你能解释一下泛型的意义吗?
函数toStr(i:object).
函数toStr(i:Record).
都将接受任何类型的toString方法(应该是一切)toStr(i:{toString():string}):string@LindaPaiste从技术上讲,并不是所有东西都有
toString
(例如
Object.create(null)
),但是typescript无法捕捉到这一点,关键是当您使用
对象
类型时,
eslint
会抱怨。