我很困惑,是否可以使用日常类型来解释这个问题?
interface IUser {
name: string;
age: number;
}
function fn(user: IUser): void {}
const user = { name: 'bob', age: 18, height: 188 };
fn({ name: 'bob', age: 18, height: 188 }); // error!
fn(user); // no error
错误来自Typescript,它告诉您正在用不需要的数据创建一个新对象。
当你使用一个已经创建的对象来满足你的接口,但有另一个值时,它可能是一个子类或另一个扩展你的接口的接口,所以有额外的项是你想要的行为。
另一方面,用额外的参数动态创建一个新对象表明fn
需要一种不同类型的对象才能正常工作。