我正在使用typescript-fsa像这样创建一个动作
const action = actionCreator<{ name: string }>('actionName'); // returns ActionCreator<{ name: string }>
export action;
有一个辅助方法(在另一个文件中)作为回调传递并接受options
类型{ name: string }
。
export type Options = { name: string }; // duplicate declaration
const doSomething = (options: Options) => { action(options) };
由于添加新密钥Options
需要我在两个文件中进行更改,所以我想创建一个实用程序,通过在 Typescript 中使用“推断”关键字/功能来提取有效负载类型。
type GetActionPayloadType<T> = T extends ActionCreator<infer E> ? E : never;
export type Options = GetActionPayloadType<typeof action>;
这就像一个魅力!
现在,下一步是使其全球可用。因此,当我转到项目的类型声明文件并将相同的代码移到那里时,ActionCreator
类型为unknown
我检查了 typescript-fsa 库中的类型定义文件,他们已经导出了该类型,但没有使其在全局命名空间中可用。
使用import { ActionCreator } from 'typescript-fsa'
in*.d.ts
文件会破坏它。
但是,导入在*.ts
文件中按预期工作。
有没有正确的方法来做到这一点?