鉴于以下情况:
interface MyInterface {
type: string;
}
let arr: object[] = [ {type: 'asdf'}, {type: 'qwerty'}]
// Alphabetical sort
arr.sort((a: MyInterface, b: MyInterface) => {
if (a.type < b.type) return -1;
if (a.type > b.type) return 1;
return 0;
});
有人可以帮助破译TS错误:
// TypeScript Error
[ts]
Argument of type '(a: MyInterface, b: MyInterface) => 0 | 1 | -1' is not assignable to parameter of type '(a: object, b: object) => number'.
Types of parameters 'a' and 'a' are incompatible.
Type '{}' is missing the following properties from type 'MyInterface': type [2345]
2条答案
按热度按时间tjrkku2a1#
下面是一个简单的例子来重现错误:
这是一个错误的原因,因为
object
不能被分配给MyInterface
类型的东西:这是一个错误的原因是因为
object
与{}
同义。{}
没有type
属性,因此与MyInterface不兼容。修复
也许你想使用
any
(而不是object
)。any
与 everything 兼容。最好修复
使用确切的类型,即
MyInterface
thigvfpy2#
如果一个对象已经是一个定义的类型,它可能会导致这个错误。
创建一个新的引用,而不是重用现有的引用。