用于循环遍历类型的Typescript语法 - 让类型为Types = typeof myObject [number]

时间:2018-03-16 21:17:20

标签: typescript syntax redux

很难找到信息,因为我不知道这是什么,只能从上下文中分辨出它在做什么。它在底部的这个例子中使用。

https://github.com/piotrwitek/react-redux-typescript-guide#typing-reducer

// inferring union type of actions
import { $call } from 'utility-types';
import * as actions from './actions';
const returnsOfActions = Object.values(actions).map($call);
export type TodosAction = typeof returnsOfActions[number];

特别是最后一行。 number未定义但似乎循环遍历数组returnOfActions。基本上这相当于做

export type TodosAction = ActionType1 | ActionType2 | ...

你会怎么称呼这种语法(所以我可以读更多)

1 个答案:

答案 0 :(得分:1)

我也被这种语法所吸引。事实证明这就是你所说的查找类型。最好在Typescript 2.1 here的宣布博客中解释。

在你的情况下,如果我们明确地写出类型

,事情会更容易理解
  • 写出类型

    interface Actions {
      [index: number] = ActionType1 | ActionType2
    }
    
  • 这里的显式类型声明

    const returnsOfActions: Actions = Object.values(actions).map($call);
    
  • 这说的是获取按编号索引的类型。哪一个 在我们的例子中是ActionType1 | ActionType2

    export type TodosAction = typeof returnsOfActions[number];