我有一个React项目,其中一个组件需要接收一个“height”属性。该属性用于确定组件的CSS属性(我使用Emotion库)。
例如:
render() {
const styles = css`
height: ${this.props.height};
`;
return (
<div style={styles}>
...
</div>
);
}
我有一个高度类型,目前它是
interface Props {
height: number | string;
}
我想创建一种类型,它不仅可以检查高度是否为字符串,还可以验证高度的单位是字符串。
例如:
10px
是一个有效的属性,因此不会出现 TypeScript 错误。
10xp
将抛出 TypeScript 错误。
是否有一种方法可以创建一种类型,检查第一部分是数字,第二部分是这些值之一?
type CssAbsoluteUnit = "cm" | "mm" | "in" | "px" | "pt" | "pc";
type CssRelativeUnit = "em" | "ex" | "ch" | "rem" | "vw" | "vh" | "vmin" | "vmax" | "%";
我希望以一种使TypeScript编译器能够抛出错误的方式完成此操作,所以仅仅使用正则表达式在渲染时进行验证并不能真正地做到这一点。
type
,正确的应该是const regex: RegExp = /my_regex/
。 - Rikin