在Typescript中将类型分配给泛型映射函数的参数



我有一个映射到数组上的函数。它看起来像这样:

// opt is either `statusA` | `statusB`
options.map((opt: keyof StatusType) => {
const activeStatus = statusCollection[opt]; //typescript doesnt scream `of any type` error
...

其中,StatusType看起来像:

type Keyys = 'statusA' | 'statusB';
export type StatusType = {
[key in Keyys]: boolean;
};

我这样做是因为我希望能够从对象中检索计算属性,并将其存储在上面的"activeStatus"变量中。

如果选项始终是statusType类型,这将很好,但是,作为一个泛型函数,我希望能够传入其他集合。我该如何定义type来取代"StatusType",使其更通用&以正确地利用CCD_ 3功能。

我走在了正确的轨道上。我所做的只是使用OR|创建一个包含不同类型定义的类型。并将其作为字符串类型的keyof传递。

type TypeContainer = StatusTypeA | StatusTypeB;
options.map((opt: keyof sype) => {
const activeStatus = statusCollection[opt as keyof TypeContainer];

希望这能有所帮助。

最新更新