TypeScript中同名interface接口会自动合并

今天在VSCode里用TypeScript写代码时发现一个很有趣的事情

interface URIError
{  
    status: number; //url异常请求错误状态码 
    requestMethod: string;  //url异常请求错误Method  
    requestURL: string; //url异常请求错误Url
}

const bugReport = (param: URIError) => {}

bugReport({
  status: 500,
  requestMethod: "POST",
  requestURL: "https://xxxx",
})
复制代码

如上图,当我在调用bugReport传入URIError的对象时,vscode提示了如下错误

意思就是对象{ status: 500, requestMethod: "POST", requestURL: "https://xxxx", }不能赋值给URIError类型,因为缺乏name,message属性,但是URIError里并没有定义name,message属性,这是怎么回事?

于是我点击bugReport的URIError参数查看引用,发现系统里面也有一个URIError接口,

系统的URIError继承Error,而Error里面刚好定义了name,message属性

当自己的代码也定义一个同名属性的时候,系统自动将这两个接口内容合并了。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享