首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >类型“string”不可分配

类型“string”不可分配
EN

Stack Overflow用户
提问于 2022-07-26 00:43:02
回答 1查看 216关注 0票数 1

下面是我如何在自己的react应用程序中定义和使用我的类型:

FontSize.ts

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    const fontSize = {
        xs: 'xs',
        sm: 'sm',
        base: 'base',
        lg: 'lg',
        xl: 'xl'
    }
    
    export default Object.freeze(fontSize);

这是我的简单文本组件:

Text.tsx

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { FontSize } from '@bl/foundation';

interface TextProps {
   size?: keyof typeof FontSize,
   children: React.ReactNode;
}
const Text:React.FC<TextProps> = ({ size = FontSize.sm, children }) => {
    const  classNames = `font-size-${size}`;
    return <p className={classNames}>
        {children}
    </p>
}

当我编写组件时:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<Text size={FontSize.lg} > Some text here. </Text>

它在size属性中显示了这个错误:

Type 'string' is not assignable to type '"xs" | "sm" | "lg" | "xl" | "base" | undefined'.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-26 00:49:15

创建一个枚举FontSize (参见下面)来替换fontSize对象。

Enum:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
enum FontSize {
    XS = "xs",
    SM = "sm",
    BASE = "base",
    LG = "lg",
    XL = "xl",
}

这还允许您删除Object.freeze函数调用。

然后更改TextProps接口,使size的类型为FontSize (创建的枚举):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
interface TextProps {
    size?: FontSize,
    children: React.ReactNode;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73120269

复制
相关文章
String类型在JVM中的内存分配
字符串在Java中用的非常得多,Jvm为了减少内存开销和提高性能,使用字符串常量池来进行优化。
会说话的丶猫
2020/08/06
2.9K0
String类型在JVM中的内存分配
如何理解 String 类型值的不可变?
String不可变很简单,如下图,给一个已有字符串"abcd"第二次赋值成"abcedl*,不是在原内存地址上修改数据,而是重新指向一个新对象,新地址。
chenchenchen
2021/09/06
1.1K0
java内存分配和String类型的深度解析
在java语言的所有数据类型中,String类型是比较特殊的一种类型,同时也是面试的时候经常被问到的一个知识点,本文结合java内存分配深度分析关于String的许多令人迷惑的问题。下面是本文将要涉及到的一些问题,如果读者对这些问题都了如指掌,则可忽略此文。
哲洛不闹
2018/09/19
7250
java内存分配和String类型的深度解析
java内存分配和String类型的深度解析
在java语言的所有数据类型中,String类型是比较特殊的一种类型,同时也是面试的时候经常被问到的一个知识点,本文结合java内存分配深度分析关于String的许多令人迷惑的问题。下面是本文将要涉及到的一些问题,如果读者对这些问题都了如指掌,则可忽略此文。
哲洛不闹
2018/09/19
1.2K0
java内存分配和String类型的深度解析
string不可变
String 类的字段,除了 hash 之外都声明为 final。所以,严格来说,Java 的字符串并不是不可变的。不过,hash 字段缓存的值是根据其他字段计算而来的,而这些字段的值都是不可变的,因此,只要选定了字符串的内容,那么表现出来的行为就像是不可变的一样。具有这种特性的类称为事实不可变的类——现实中很少见到这种类,程序员往往可以忽略真正不可变的数据和事实不可变的数据之间的区别。
宇宙之一粟
2021/01/13
3860
UUID long类型、String类型
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
qubianzhong
2019/09/18
2.8K0
STRING对象不可变的原理
string方法的修改效果是通过新建StringBuilder来实现的,更老的版本使用StringBuffer,后者是线程安全版本,但效率较低
用户4283147
2022/10/08
7301
STRING对象不可变的原理
为什么String是不可变
区分对象和对象的引用 对于Java初学者, 对于String是不可变对象总是存有疑惑。看下面代码: String s = "ABCabc"; System.out.println("s = " + s);
用户9131103
2023/07/17
1650
String类不可变分析以及普通不可变类
要了解String类创建的实例为什么不可变,首先要知道final关键字的作用:final的意思是“最终,最后”。
名字是乱打的
2021/12/22
6420
String类不可变分析以及普通不可变类
Redis string 类型
可以是字符串、整数或浮点,统称为元素。对字符串操作,对整数类型加减。 追加 set key value append key 1 get key 赋值 setnx key 10 # 当且仅当 key 不存在时,将 key 的值设为 value # 多键操作 mset # 一次设置多个键的值 msetnx # 当且仅当键不存在时才能赋值 mset key1 value1 key2 value2 mget # 一次返回多个键的值 mget key1 key2 getset key
康怀帅
2018/02/28
8900
变量类型-String
教程: 一:字符串的创建     用单引号、双引号括起来,同时用转义字符转义 二:字符串的索引     变量[头标:尾标]     从前到后:0---end     从后到前:-1---->-len(str) 三:获取字符串的索引序号     str.index("s") 四:字符串的更新     截取字符串的一部分与其他字符串拼接,     但是字符串不能修改! 五:Python转义字符     \\     反斜杠符号     \'     单引号     \"     双引号     \a     响铃 六:字符串运算符     +, * number, [number],[a:b]     in 、not in     r在字符串第一个引号前面表示原始字符串,没有没有转义字符 六:字符串内建函数     max、min最大、最小的     upper小写转换为大写     lower大写转成小写     len求长度
py3study
2020/01/19
1K0
String类的不可变性
来源 | 简书| 作者 | 指尖上的榴莲 一.原理(为什么说String类是不可变的) 1.什么是不可变对象 如果一个对象在创建之后就不能再改变它的状态,那么这个对象是不可变的(Immutable)。
Tanyboye
2018/07/02
6030
String类型转换BigDecimal、Date类型
public static void main(String[] args) { String str1=”2.30″; BigDecimal bd=new BigDecimal(str1); System.out.println(bd); } Java String类型转换成Date日期类型
全栈程序员站长
2022/07/01
1.4K0
String为什么是不可变的
我们通过查看String源码可以发现 String内部char数组是通过 private final修饰的,表示不可访问 而且String类也通过final修饰表示不可继承
@依然范特西
2022/12/12
5580
String为什么是不可变的
Redis - string类型操作
以个人信息为例操作string类型 设置操作: set:         set key value                    创建key-value名值对 setn
Aichen
2018/05/18
8510
redis妙用-string类型
string类型,是我们最常用的。以及一些特性,我们都比较熟悉,这一节一起回顾一下string的应用场景,以及对这些场景延申的一些思考。
并发笔记
2020/10/21
1.6K0
redis妙用-string类型
Java实现:String类型
题目:分析以下需求,并用代码实现:(1)从键盘循环录入录入一个字符串,输入"end"表示结束           (2)将字符串中大写字母变成小写字母,小写字母变成大写字母,其它字符用"*"代替,并统计字母的个数               举例:键盘录入:Hello12345World               输出结果:hELLO*****wORLD               总共10个字母
用户7886150
2020/12/07
5810
Java 之 String 类型
因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。
阳光岛主
2019/02/19
5690
Redis数据类型之String类型
Redis数据类型之String类型
人生不设限为梦想时刻准备着
2018/05/27
8320
Java String 构造方法中的内存分配
因为构造 String 对象有几种不同的方法,我们可以通过直接赋值的方式构造 String 对象,我们也可以通过 new 的方式来构造一个 String 对象。
HoneyMoose
2022/06/22
9060
Java String 构造方法中的内存分配

相似问题

类型'string‘不可分配给类型'(url: string) => string’。to (2322)

195

类型{ [key: string]:string }不可分配给类型{ [key: string]:string }区'undefined‘

14

TypeScript:可索引类型,string[]不可分配

20

Typescript -类型KeyValuePair<string,Date>不可分配给类型KeyValuePair<number,string>

165

React TypeScript:类型“”string[]“”不可分配给类型“”never[]“”

1103
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文