我应该如何解释Typescript中的这种代码类型检查



我很困惑,是否可以使用日常类型来解释这个问题?

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需要一种不同类型的对象才能正常工作。

相关内容

  • 没有找到相关文章

最新更新