我是TypeScript的新手,我得到了以下预定义类型:
from pptx.oxml.xmlchemy import OxmlElement
def SubElement(self, parent, tagname, **kwargs):
element = OxmlElement(tagname)
element.attrib.update(kwargs)
parent.append(element)
return element
def _set_cell_border(self, cell, border_color="#230E38", border_width='12700'):
tc = cell._tc
tcPr = tc.get_or_add_tcPr()
# Left Cell Border
lnL = self.SubElement(tcPr, 'a:lnL', w='3175', cap='flat', cmpd='sng', algn='ctr')
lnL_solidFill = self.SubElement(lnL, 'a:solidFill')
lnL_srgbClr = self.SubElement(lnL_solidFill, 'a:srgbClr', val=border_color)
lnL_prstDash = self.SubElement(lnL, 'a:prstDash', val='solid')
lnL_round_ = self.SubElement(lnL, 'a:round')
lnL_headEnd = self.SubElement(lnL, 'a:headEnd', type='none', w='med', len='med')
lnL_tailEnd = self.SubElement(lnL, 'a:tailEnd', type='none', w='med', len='med')
# Right Cell Border
lnR = self.SubElement(tcPr, 'a:lnR', w='3175', cap='flat', cmpd='sng', algn='ctr')
lnR_solidFill = self.SubElement(lnR, 'a:solidFill')
lnR_srgbClr = self.SubElement(lnR_solidFill, 'a:srgbClr', val=border_color)
lnR_prstDash = self.SubElement(lnR, 'a:prstDash', val='solid')
lnR_round_ = self.SubElement(lnR, 'a:round')
lnR_headEnd = self.SubElement(lnR, 'a:headEnd', type='none', w='med', len='med')
lnR_tailEnd = self.SubElement(lnR, 'a:tailEnd', type='none', w='med', len='med')
# Top Cell Border
lnT = self.SubElement(tcPr, 'a:lnT', w='3175', cap='flat', cmpd='sng', algn='ctr')
lnT_solidFill = self.SubElement(lnT, 'a:solidFill')
lnT_srgbClr = self.SubElement(lnT_solidFill, 'a:srgbClr', val=border_color)
lnT_prstDash = self.SubElement(lnT, 'a:prstDash', val='solid')
lnT_round_ = self.SubElement(lnT, 'a:round')
lnT_headEnd = self.SubElement(lnT, 'a:headEnd', type='none', w='med', len='med')
lnT_tailEnd = self.SubElement(lnT, 'a:tailEnd', type='none', w='med', len='med')
# Bottom Cell Border
lnB = self.SubElement(tcPr, 'a:lnB', w='3175', cap='flat', cmpd='sng', algn='ctr')
lnB_solidFill = self.SubElement(lnB, 'a:solidFill')
lnB_srgbClr = self.SubElement(lnB_solidFill, 'a:srgbClr', val=border_color)
lnB_prstDash = self.SubElement(lnB, 'a:prstDash', val='solid')
lnB_round_ = self.SubElement(lnB, 'a:round')
lnB_headEnd = self.SubElement(lnB, 'a:headEnd', type='none', w='med', len='med')
lnB_tailEnd = self.SubElement(lnB, 'a:tailEnd', type='none', w='med', len='med')
在我的脚本中,我有大量使用此类型的变量:
type SC = StyledComponent<any, any>;
有没有更好的方式编写这些内容?
感谢您的帮助。
答案 0 :(得分:1)
如果要定义大量具有相同类型的变量,通常这表明您需要为它们提供更好的类型,或者进行重构并将其分解。
使用<any, any>
,您将失去Typescript的大部分好处。
为什么不以正确的方式定义每个变量,那么它们将不会都是相同的模糊any
类型?
此外,您可以通过创建一种新类型来稍稍帮助自己-通过重新排列列表,我可以看到它可以像这样分组:
StyledLabelSide!: SC;
StyledLabelRatio!: SC;
StyledLabelAngle!: SC;
StyledLabelSpeed!: SC;
StyledInputSide!: SC;
StyledInputRatio!: SC;
StyledInputAngle!: SC;
StyledInputSpeed!: SC;
StyledRangeSide!: SC;
StyledRangeRatio!: SC;
StyledRangeAngle!: SC;
StyledRangeSpeed!: SC;
您可以使用字段side
,ratio
,angle
和speed
来定义对象的类型,然后可以定义三个变量({{1 }},StyledLabel
和StyledInput
),而不是十二。