首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型记录定义数组,该数组只能包含特定字符串。

类型记录定义数组,该数组只能包含特定字符串。
EN

Stack Overflow用户
提问于 2018-07-24 17:50:17
回答 1查看 2.8K关注 0票数 4

我很困惑为什么下面的错误,我有字符接口

代码语言:javascript
复制
interface Character {
 race: "ORC" | "ELF" | "HUMAN" | "DWARF"
}

和另一个接口酒馆

代码语言:javascript
复制
interface Tavern {
  races: Character['race'][]
}

这里的想法是,种族是一个字符串数组,只能是"ORC" | "ELF" | "HUMAN" | "DWARF"

由于某种原因,当我像这样使用它时会出错。

代码语言:javascript
复制
const tavern: Tavern = {
   races: ["ORC", "ELF", "HUMAN", "DWARF"]
}

错误读取如下

ts类型'{ races: string[] }‘不能分配给键入'Tavern’。财产“种族”的类型是不相容的。类型'string[]‘不能指定为’类型‘(“人工”、“兽人”、“兽人”、"ELF“、”\x“、”矮人“等)。键入'string‘不能指定键入’人‘\{e76f}\

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-24 18:27:02

这是一个古老的打字稿故事,你很可能不得不这样做:

代码语言:javascript
复制
const tavern: Tavern = {
   races: ["ORC", "ELF", "HUMAN", "DWARF"] as Array<Character['race']>
}

有可能

代码语言:javascript
复制
type Race = "ORC" | "ELF"

const tavern: Tavern = {
   races: ["ORC" as Race, "ELF" as Race]
}

这应该能行

代码语言:javascript
复制
enum Race = { ORC, ELF }

interface Tavern {
  races: Race[]
}

const tavern: Tavern = {
   races: [Race.ORC, Race.ELF]
}
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51504802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档