【发布时间】:2021-10-18 17:41:32
【问题描述】:
我正在从事 TS 项目,并且我有复杂的类结构(抽象工厂)。问题是我的界面看起来像:
export interface IProduct {
customization: Customization;
preparation: Preparation;
make: () => void;
setMilk?: (volume: number) => void;
setWater?: (volume: number) => void;
setSugar?: (volume: number) => void;
}
所以,我有很多类似的 setter 属性(最后 3 个),还需要更多,但模板是一样的。问题:有没有办法将它们缩短为一行?看起来像:
['set*': string]: (volume: number) => void;
(可能是索引签名等的一些技巧)
【问题讨论】:
-
您可以使用实际的索引签名like this,这将允许以
set开头的任何内容。如果您需要将其限制为一些键名的联合,您可以使用this I guess。如果您提到哪个更适合您,我很乐意将其中任何一个写下来作为答案。 -
如果您在接口上定义永远不会实现的字段,为什么还要有一个接口?
-
@jcalz 你太棒了,谢谢
-
@YuriiHrecheniuk 那么你想要哪种方法?两个都?我想我可以写两个。
标签: typescript interface