Javascript 类型';X';不能用作索引类型
我收到typescript中的错误: 消息:“类型“TransitionStyles”不能用作索引类型。” 我想知道是否可以更改我的界面,以便也可以使用它和Javascript 类型';X';不能用作索引类型,javascript,typescript,Javascript,Typescript,我收到typescript中的错误: 消息:“类型“TransitionStyles”不能用作索引类型。” 我想知道是否可以更改我的界面,以便也可以使用它和索引类型: export interface TransitionStyles { entering: Object entered: Object exiting: Object exited: Object [key: string]: Object } 或者我被迫使用不同的界面,如: 导出类型转换状态='enter
索引类型
:
export interface TransitionStyles {
entering: Object
entered: Object
exiting: Object
exited: Object
[key: string]: Object
}
或者我被迫使用不同的界面,如:
导出类型转换状态='entering'|'entered'|'exiting'|'exited'
我想你想要的是类似
export interface TransitionStyles {
entering: object;
entered: object;
exiting: object;
exited: object;
}
export type TransitionState = keyof TransitionStyles;
export type PromisifiedTransitionStyles = {
[P in TransitionState]: Promise<TransitionStyles[P]>
};
导出接口转换样式{
输入:对象;
输入:对象;
退出:对象;
退出:对象;
}
导出类型TransitionState=keyof TransitionStyles;
导出类型PromisifiedTransitionStyles={
[P处于过渡状态]:承诺
};
请注意,如果我们重新引入
string
索引签名,[key:string]:TransitionState
,则键类型TransitionState
,将折叠为仅string
,因为在类型string |“literal”中
更一般的类型包含工会更具体的组成部分。使用keyof
。另外,不要使用对象
类型。使用对象
或{}
,具体取决于您的意思。我尝试过[key:TransitionState],但不起作用,请您提供一个示例,您必须使用类型T={[P in TransitionState]}
。它目前不适用于接口。你能写一个完整的例子吗?