在这里,我试图检查是否有"助推器" (Card [])在播放器界面中的boostersToGo变量中。如果有,我想转移()它并使其成为currentBooster。
但是,Typescript给了我一个错误:
message: 'Type 'Card[] | undefined' is not assignable to type 'Card[]'.
Type 'undefined' is not assignable to type 'Card[]'.'
我的编辑器(VSCode)在这里用红色标记了player.currentBooster。发生了什么事?我在使用打字稿之前遇到过类似的问题,但是他们已经在他们身上乱了一点。有什么方法可以解决这个问题?
if (player.boostersToGo.length > 0) {
player.currentBooster = player.boostersToGo.shift()
}
//player is guaranteed to fit the interface Player because that's what's explicitly passed into the function
export interface Player {
boostersToGo: Card[][]
currentBooster: Card[]
picks: Card[][]
human: boolean
}
export interface Card {
name: string
manaCost: string
colors?: string[]
cmc: number
types: string[]
rarity: string
imageUrl: string
pick?: boolean
}
谢谢!
答案 0 :(得分:1)
我无法在http://www.typescriptlang.org中重现它,所以它可能与您的TypeScript
/ IntelliSense
版本相关,这也将更改您的lib.d.ts
定义。
可能值得尝试在那里快速运行大部分有问题的代码,看看问题是否仍然存在。如果没有,可能升级到最新的TypeScript
版本或更新VSCode
会有所帮助。
否则,您始终可以使用Type Assertion (casting)强制执行类型:
if (player.boostersToGo.length > 0) {
player.currentBooster = player.boostersToGo.shift() as Card[];
}