gpt4 book ai didi

reactjs - 类型字符串不可分配给类型

转载 作者:搜寻专家 更新时间:2023-10-30 21:25:28 25 4
gpt4 key购买 nike

我正在尝试创建一个只能有两个值的常量,如代码所示。并且 state.lang 已经是类型安全的 en | ar

const keyname: 'owner_name_en' | 'owner_name_ar' = 'owner_name_' + state.lang;

我收到如下错误:Type 'string' is not assignable to type '"owner_name_en"| “owner_name_ar”'

我该如何修复这个错误?

最佳答案

原因是您正在声明一个新的内联类型(作为字符串枚举),其唯一可能的值为'owner_name_en' | 'owner_name_ar'。 (和 null )。

相当于

type OwnerNameLang = 'owner_name_en' | 'owner_name_ar';
const keyname: OwnerNameLang = 'owner_name_' + state.lang;

现在,你不能再用这种方式连接不同的类型了

const str: "hello" = "hel" + "lo"

希望得到唯一可能值为null的未命名内联类型"hello" (因为在您的情况下,作业的右侧也是两个 <string>)。

您需要使用 type assertion , 喜欢

type OwnerNameLang = 'owner_name_en' | 'owner_name_ar';
const keyname: OwnerNameLang = ('owner_name_' + state.lang) as OwnerNameLang ;

在这一点上,最好使用具有多个可分解属性的对象(这样您就可以仅将 en/ar 存储为字符串枚举,并以其他方式生成该字符串)。但是,如果不进一步了解此字符串的用途,就很难提出更好的替代方案。

我要补充一点,我是类型安全的坚定支持者,主要是因为它可以帮助开发人员注意到他们有一天会发现一个新的 state.lang。忘记到处处理它。但有时,一个字符串就足够了。由您决定。

关于reactjs - 类型字符串不可分配给类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57207443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com