我很困惑为什么下面的错误,我有字符接口
interface Character {
race: "ORC" | "ELF" | "HUMAN" | "DWARF"
}和另一个接口酒馆
interface Tavern {
races: Character['race'][]
}这里的想法是,种族是一个字符串数组,只能是"ORC" | "ELF" | "HUMAN" | "DWARF"。
由于某种原因,当我像这样使用它时会出错。
const tavern: Tavern = {
races: ["ORC", "ELF", "HUMAN", "DWARF"]
}错误读取如下
ts类型'{ races: string[] }‘不能分配给键入'Tavern’。财产“种族”的类型是不相容的。类型'string[]‘不能指定为’类型‘(“人工”、“兽人”、“兽人”、"ELF“、”\x“、”矮人“等)。键入'string‘不能指定键入’人‘\{e76f}\
发布于 2018-07-24 18:27:02
这是一个古老的打字稿故事,你很可能不得不这样做:
const tavern: Tavern = {
races: ["ORC", "ELF", "HUMAN", "DWARF"] as Array<Character['race']>
}有可能
type Race = "ORC" | "ELF"
const tavern: Tavern = {
races: ["ORC" as Race, "ELF" as Race]
}这应该能行
enum Race = { ORC, ELF }
interface Tavern {
races: Race[]
}
const tavern: Tavern = {
races: [Race.ORC, Race.ELF]
}https://stackoverflow.com/questions/51504802
复制相似问题