React-typescript:如何强制执行泛型参数,同时保持keyof T

时间:2018-03-19 20:23:53

标签: reactjs typescript

看哪,反应打字稿组件:

interface ComponentProps<A> {
  actions: A;
  onAction(key: keyof A): void;
}

function Component<A>(props: ComponentProps<A>) {
  return <div>{/* ... */}</div>;
}

<Component
  actions={{ a: 'one', b: 'two' }}
  onAction={action => {
    action; // type is "a" | "b"
  }}
/>;

我想强制执行:A extends {[key: string]: string}但我不想将action的类型更改为string。我仍然希望这是"a" | "b"

我该怎么做?当我添加A extends {[key: string]: string}时,它会将action的类型(从onAction中的用法)更改为string

任何想法为什么?

0 个答案:

没有答案