interface同名的问题

来源:2-14 深入理解接口+真实应用场景

慕九州213653110

2023-03-11

老师,问几个问题:
为什么interface可以创建两个一样的接口名,不报错,但是type不可以呢
还有我项目中就是定义了多个同名的接口(可不在同一个js里面),
有意思的是编译出来的接口,如果没有实现的话,js里面根本就不会有接口
图片描述

我试了一下,interface在同一个文件中同名会把里面的属性字段合并在一起,同一个属性名如果不同类型的话就会报错,那type为什么不能合并呢 == > 是因为继承的原因吗
例如下面的图片
图片描述

图片描述

图片描述

我这里又两个ts文件,里面都定义了Demo1的接口,我在调用他们的时候肯定不可以同时用他们,所以我在调用的时候,想起一个别名去分开这两个同名的接口,应该怎么做呢

写回答

1回答

keviny79

2023-03-11

(1)  type 为什么不能合并, 接口能合并,其实是 ts 的一种符合接口和类型的语法规则, (1) interface 定义的是对象类型,对象类型合并才有意义 。 (2) ttype  可以定义任意类型,type A=string  type B={name:"wangwu"}  这样这就没法合并在一起了。


(2)用一个别名去分开这两个同名的接口,方法1:用第10章的 d.ts 声明文件来解决。

方法2:如果在 ts 文件来区分,那么可以用命名空间来解决,

export namespace Store {

  export interface Product {

    name: string

    price: number

    account: number

    buy(): void

  }

}





0
1
慕九州213653110
哦,谢谢老师
2023-03-12
共1条回复

TypeScript 从入门到深度掌握,晋级TS高手

200+技术点,22 场景应用,Vue3 源码 TS 用法剖析

430 学习 · 53 问题

查看课程