reactjs - 如何检查给定的字符串是字符串文字类型还是其他字符串值
问题描述
我已经定义了一个字符串文字类型。
type MyColor =
| 'primary'
| 'secondary'
| 'accent';
以及一个接受该类型或其他字符串的 React 组件。
color
如果道具匹配,我想设置类名MyColor
,或者color
是十六进制代码,例如'#dedede'
然后设置background-color
为颜色。
interface MyComponentProps {
color: MyColor | string;
}
const MyComponent = (props: MyComponentProps) => {
let className = '';
let style = {};
if (props.color IS MyColor) { // This is what I want to know.
className = `bg-${props.color}`;
} else {
style = { backgroundColor: props.color };
}
return (
<div
className={className}
style={style}
>Hello!</div>
);
}
export default MyComponent
有没有简单的方法来实现这一点?还是我应该创建一个检查所有可用值的函数?
更新
如果我使用数组创建一个检查函数,那么使用 TypeScript 的编辑器就没有帮助。
function isMyColor(color: string): boolean {
if (['primary', 'secomdary'].includes(color as MyColor) {
return true;
}
return false;
}
我有一个错字secondary
并省略了,accent
但我的编辑器(VSCode)和 TypeScript 编译器都没有发出警告。
解决方案
推荐阅读
- reactjs - TypeError: state.update 不是 react-planner 包面临的功能
- apache-spark - 如何在pyspark中聚合数组内的值?
- node.js - 带节点的ejs:包含中的变量
- c++ - 是否有像地图这样的 C++ 结构,但不是值的键,而是值的句柄?
- pdf - 为什么pdf下载的bij Trinidad fileDownloadActionListener不能用pdf阅读器打开?
- tokenize - spacy如何分裂“的”?
- spring-boot - HTTPOnly Cookie 中的 Spring Boot + Angular 9 JWT 令牌存储
- javascript - 将接口更改为对象类型
- python - 无法从 Flask 连接到 Postgres Docker 容器
- python - 在 PyQt 应用程序中嵌入 aiohttp 服务器