创建基于另一个的新字符串文字类型

时间:2019-06-17 19:27:20

标签: css typescript typescript-generics

csstypes的CSS.Pseudo类型具有一堆CSS选择器,例如':hover',':active'等。

是否可以基于CSS.Pseudo创建一个新类型,该类型接受所有CSS.Pseudo类型,但前面带有“&”?

例如'&:hover','&:active'等。

我希望能够做类似的事情

type CSS.Pseudo = ':hover' | ':active' ... etc.

type CssStyle= { [SOMETHINGSOMETHING CSS.Pseudo]: string}

const styles: CssStyle= {
    '@:hover: someCssString, //OK
    ':hover:  someCssString,  //NOT OK
    '&:hov':  someCssString   //NOT OK
}

我已经在TS Playground上尝试了十亿次尝试,但是我觉得我在TS上不够好,或者那是不可能的。

1 个答案:

答案 0 :(得分:0)

至少从TypeScript 3.5开始,您不能以编程方式执行此操作。

这是suggested之前的建议,该建议已作为string literal key augmentationregular expression string literal validation建议的重复形式被关闭,这两种建议都没有特别接近于被纳入该语言的可能性。如果您确实希望看到这种情况发生,那么您可能想要解决其中一个或两个问题,并给它们打个“?”,或者如果您认为用例比已经存在的更具吸引力,请描述您的用例。

抱歉,这不是您可能想要的答案,但是至少您可以停止尝试让编译器为您执行此操作。祝你好运!