我正尝试在一些旧代码中添加一些类型。
有一个transitionData
对象,该对象可能是按索引添加的对象,如下所示:
this.transitionData[id] = transition
其中id
是number
,而transition
是Transition
类型。
或者可能是:
transitions[t].timer.stop()
t
是字符串,而timer
是Timer
类型。
我想要这个界面:
export interface TransitionData {
[index: number]: Transition
[key: string]: {timer: Timer}
}
但打字稿抱怨:
数字索引类型'Transition'不能分配给字符串索引类型'{timer:Timer; }
答案 0 :(得分:1)
创建两个索引签名并将它们合并在一起。
interface TransitionMap {
[index: number]: Transition
}
interface TimerMap {
[index: string]: { timer: Timer }
}
declare const transitionData: TransitionMap & TimerMap;
TypeScript会了解到哪里。
transitionData["1"] // Timer
transitionData[1] // Transition