如何在 Typescript 中将联合值分配给对象数组

Pål*_*gbø 0 typescript

setState()将联合类型值分配给对象数组时,如何设计函数?

enum SomeStateEnum {
  IsRunning,
  Name,
}

type PersonState = {
  [SomeStateEnum.IsRunning]: boolean;
  [SomeStateEnum.Name]: string;
};

const state: PersonState = {
  [SomeStateEnum.IsRunning]: false,
  [SomeStateEnum.Name]: 'John Doe',
};

function setState(key: SomeStateEnum, value: boolean | string) {
  state[key] = value;
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Vig*_*aut 6

您需要确保分配的值应与键的值类型匹配。

function setState<T extends SomeStateEnum>(key: T, value: PersonState[T]) {
  state[key] = value;
}
Run Code Online (Sandbox Code Playgroud)