interface同名的问题
来源:2-14 深入理解接口+真实应用场景

慕九州213653110
2023-03-11
老师,问几个问题:
为什么interface可以创建两个一样的接口名,不报错,但是type不可以呢
还有我项目中就是定义了多个同名的接口(可不在同一个js里面),
有意思的是编译出来的接口,如果没有实现的话,js里面根本就不会有接口
我试了一下,interface在同一个文件中同名会把里面的属性字段合并在一起,同一个属性名如果不同类型的话就会报错,那type为什么不能合并呢 == > 是因为继承的原因吗
例如下面的图片
我这里又两个ts文件,里面都定义了Demo1的接口,我在调用他们的时候肯定不可以同时用他们,所以我在调用的时候,想起一个别名去分开这两个同名的接口,应该怎么做呢
写回答
1回答
-
(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
}
}
012023-03-12
相似问题