在TypeScript中有没有一种方法可以将一个`type`转换为一个`interface`?
我已经阅读了这个StackOverflow上的问答,但我认为它与我在这个问题中描述的情况不太匹配。
下面是一个快速示例,展示了一个场景,其中一个`Product`被定义为来自第三方TypeScript库的`type`。
要将那个
我已经阅读了这个StackOverflow上的问答,但我认为它与我在这个问题中描述的情况不太匹配。
下面是一个快速示例,展示了一个场景,其中一个`Product`被定义为来自第三方TypeScript库的`type`。
// ProductFragmentOne is used to highlight the possibility of composition(unions, etc)
type Product = ProductFragmentOne & { sku: string };
要将那个
产品
整合到我们自己的系统中,可以通过扩展(联合)一个类型
来实现,如下面的示例所示:export type ProductSchema = Product & {
name: string;
}
我的问题是:
- 我们的
ProductSchema
有没有办法被定义为一个接口
?这可行吗?
# Example of how the code may look
export interface ProductSchema{
name: string;
//Do the magic to add Product properties here
}
更新:采用这种方法的原因纯粹是因为对interface
而非type
的偏好。这样可以使现有代码保持其风格,无论采用了哪个第三方库。
谢谢。
type
已经是一个对象类型(或对象类型的交集),其键是静态已知的时,你才能从type
创建一个interface
。由于Product
是一个联合类型,它不满足这个限制。当然,{ ... }
不是实际的代码,所以这不是我可以确定的 [mcve] 一种方式或另一种方式。你为什么还想要一个interface
?你是否因为某种原因需要它?还是只是出于个人喜好? - jcalz