如何从打字稿中的对象和键中提取值类型

How to extract value type from object and keys in typescript

我正在使用 argfp-ts。我想要一个 returns 基于输入键值之一键入的函数。

export const getArg =  <T extends Spec> (args: Result<T>) => (argName: {[K in keyof T]: T[K]}): O.Option<T[K]> =>
    O.fromNullable(args[argName])

但是它说我不能用 K in keyof T 建立索引,尽管 K 是实际的键。它不会在 Option 中看到 K。我需要类型方面的帮助。

Result

    export type Result<T extends Spec> = { _: string[] } & {
        [K in keyof T]?: T[K] extends Handler
            ? ReturnType<T[K]>
            : T[K] extends [Handler]
            ? Array<ReturnType<T[K][0]>>
            : never;
    };

我无法使用 arg 库。但是我能够使用 command-line-args

提取类型
export const getArg =
  (args: CommandLineOptions) =>
  <K extends keyof CommandLineOptions>(
    argName: K
  ): O.Option<CommandLineOptions[K]> =>
    O.fromNullable(args[argName])

正确的方法是使用 extends keyof 而不是 in keyof,然后通过 F[K]

引用所需的类型