我有一个第三方代码段定义为
export const Actions = {
findByIdAccessTokens: class implements Action {
public readonly type = UserActionTypes.FIND_BY_ID_ACCESSTOKENS;
public payload: { id: any; fk: any; customHeaders };
constructor(
id: any,
fk: any,
customHeaders?: Function,
public meta?: any
) {
this.payload = { id, fk, customHeaders };
}
},
}
在我的代码中,我想传递一个类型为findByIdAccessTokens
的参数
但是,我似乎找不到一种能够告诉编译器我的参数属于该类型的方法
例如,
import { Actions,ActionTypes } from '@base/sdk/actions';
...
filter((action:Actions.findByIdAccessTokens) =>
给出错误[ts] Cannot find namespace 'Actions'.
我尝试了所有可以想到的组合,但不幸的是,我的Google搜索字词是如此通用(类,类型等),以至于我找不到解决问题的文章
我知道我是否定义并导出了一个类
export class findByIdAccessTokens implements Action {
public readonly type = UserActionTypes.FIND_BY_ID_ACCESSTOKENS;
public payload: { id: any; fk: any; customHeaders };
constructor(
id: any,
fk: any,
customHeaders?: Function,
public meta?: any
) {
this.payload = { id, fk, customHeaders };
}
},
然后直接导入,然后
import { updateByIdAccessTokensSuccess } from '@base/sdk/actions';
...
filter((action:findByIdAccessTokens) =>
编译得很好(以及类型安全性)
答案 0 :(得分:1)
您可以使用类型查询来获取类,您已经很接近了,但是您需要使用typeof
来获取常量的类型:
let findByIdAccessTokens: typeof Actions.findByIdAccessTokens; // findByIdAccessTokens is the class (not an instance of the class)
new findByIdAccessTokens(/*...*/ ) // Add parameters
如果您需要类的实例类型,则可以使用InstanceType
条件类型
let findByIdAccessTokens!: InstanceType< typeof Actions.findByIdAccessTokens>; // findByIdAccessTokens is the instance of the class
findByIdAccessTokens.type // we can access properties