当前位置: 首页 > 知识库问答 >
问题:

Typescript:类型“string”不能赋给固定值的字符串

谭学名
2023-03-14

我是打字新手。我正在使用Express、Node和Typescript进行备份。我有一个具有类型的对象:

interface Fruit {
 FruitType: "Citrus" | "Melon" | "Tropical" 
 FruitName: string
}

我正在创建一个新的水果实例,从JSON文件中重新创建水果类型并填充它

const config = readFromFile()
const myFruit:Fruit ={
 FruitName: config.fruitName,
 FruitType: config.fruitTYPE
}

这会产生一个错误类型“string”不能分配给类型“Citrus”|“Melon”|“Tropical”。我知道我得到这个错误是因为我分配了一个未知字符串而不是Enum值。我假设解决方案是在将水果类型指定给FruitType对象之前,以某种方式检查水果类型是否为其中一个值。如何修复此错误?

共有2个答案

陆烨烁
2023-03-14

首先,您需要转换值并使用它。

    type fruitType=  "Citrus" | "Melon" | "Tropical"

    interface Fruit {
      FruitType: fruitType
      FruitName: string
    }
    
    const config = readFromFile()
    const myFruit : Fruit = {
      FruitName: config.fruitName,
      FruitType: config.fruitTYPE as fruitType // Cast the config.fruitTYPE to fruitType
    }
荀振国
2023-03-14

你需要投射它。

type fruitCategories =  "Citrus" | "Melon" | "Tropical" 
interface Fruit {
 FruitType: fruitCategories
 FruitName: string
}

现在,您有了设置水果类型的水果类别

const config = readFromFile()
const myFruit:Fruit ={
 FruitName: config.fruitName,
 FruitType: config.fruitTYPE as fruitCategories // you need to tell the complier
}

因此,您需要从字符串中转换类型,并告诉编译器这应该是fruitCategories类型或您想要的任何名称。

 类似资料: