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

标签 css typescript typescript-generics

CSS.伪类型的 csstypes 有一堆 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 上不够好,或者根本不可能。

最佳答案

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

这是 suggested之前,建议作为 string literal key augmentation 的副本关闭或 regular expression string literal validation建议,这两者都没有特别接近于被纳入语言。如果你真的想看到这种情况发生,你可能想解决其中一个或两个问题并给他们一个 👍 或者如果你认为它比现有的更有吸引力的话,可能会描述你的用例。

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

关于css - 基于另一个创建新的字符串文字类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56637731/

相关文章:

typescript - 条件可选参数类型

typescript - 通用函数使用数组推送导致错误 : Type 'string' is not assignable to type 'never'

html - 输入焦点时给 <i> 标签背景

html - 使用 css 背景将图像水平对齐到下拉列表

php - 如何从带有分页符的表格中正确生成PDF

javascript - 删除占位符输入类型日期上的 mm/dd/yyyy

javascript - Angular 中的异步操作完成

typescript - 如何获取复杂类型以在 vue.js 模块中初始化和声明数据

javascript - 通过 jest (ts-jest) 使用命名空间测试 typescript 代码

typescript - 将函数返回值定义为读取对象中路径的类型