Typescript 2.0.x与2.1.x,类型定义由switch / case语句过滤

fxck

@ ngrx / store(angular(2)的可观察到的redux实现)使用此模式将适当的类型传递给reducer

看到实际的代码

export const ActionTypes = {
  FOO:  type('foo'),
  BAR:  type('bar')
};

export class FooAction implements Action {
  type = ActionTypes.FOO;

  constructor(public payload: string) { }
}

export class BarAction implements Action {
  type = ActionTypes.BAR;

  constructor(public payload: number) { }
}

export type Actions
  = Foo
  | Bar;

以及减速器:

export class SomeReducerState {
  foo: string;
  bar: number;
}

const initialState = {
  foo: undefined,
  bar: 0
};

export function someReducer(
  state: SomeReducerState = initialState,
  action: some.Actions
): SomeReducerState {

  switch (action.type) {
    case some.ActionTypes.FOO:
      return Object.assign({}, state, { foo: action.payload });
    case some.ActionTypes.BAR:
      return Object.assign({}, state, { bar: action.payload });
    default:
      return state;
  }

}

它在typescript 2.0.x中的工作方式是(我认为)它将使用switch / case来决定/过滤出什么是正确的类型action.payload,所以insidecase some.ActionTypes.FOO action.payloadstring,insideBARnumber现在使用打字稿2.1.x似乎是any有什么方法可以用2.1.x达到相同的结果?那是个错误吗?

fxck

方法是使用readonlyon type另一个好处是它不再需要typeUtility函数来强制转换字符串的类型。

完整代码在这里

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

加载标题为0,1,x1,x2,x3 ..的列

Swift JSON 错误无法将“__NSArrayM”(0x10b2cba88)类型的值转换为“NSDictionary”(0x10b2cd1a8)

如何在x轴值出现多次的python中进行绘制,例如0 1 2 3 2 1 0

计算1 +1!/ X + 2!/ X ^ 2 +…+ N!/ X ^ N

在Haskell中如何做到这一点?[x ^ 0,x ^ 1,x ^ 2,x ^ 3 ...]

X和Y由0和1组成且X≠Y的所有字符串X2Y

类型(x0 = y0,x1 = y1,x2 = x0,...)的C ++中括号和逗号表达式的求值顺序

iOS图表错误:线程1:EXC_BAD_ACCESS(代码= 2,地址= 0x2a0c220)

准确的sqrt(1 +(x / 2)^ 2)+ x / 2

在Haskell中计算`[[1,x ^ 1,x ^ 2,...,x ^ n]`

我该如何写一个递归方法来显示x ^ 0 + x ^ 1 + x ^ 2 + ... x ^ n,然后显示x ^ n的计算值?

如何理解打字稿中类型定义中的[[0,1,2,... 0 []]`?

Chartjs 在 0,1,2 位置绘制我的值,而不是它们沿 x 轴的值

为什么 Python 为 [0xfor x in (1, 2, 3)] 返回 [15]?

电池电量状态(0x2A1B)蓝牙规范是什么意思?

'%0*x' % (int1, int2) 语法在python中有什么作用?

从由reduce_rational_inequalities([[-3 <2 * x + 1]],x)给定的And对象中提取值。例如(And <-2 <x,x <oo)

线程 1: EXC_BREAKPOINT (code=1, subcode=0x1cd595b2c) in swift

我卡在显示边界框上。这些错误(cv2.rectangle(img(x1,y1),(x2,y2),(0,255,0),2)TypeError:'numpy.ndarray'对象不可调用)

仅使用增量,减量,循环和= 0来制作pow(x1,x2)函数

scanf(“%[^ \ n] d”,x)或scanf(“%[0-9] d”,x)将1变成49,将2变成50

Error1错误LNK1107:文件无效或损坏:无法在0x2B0读取

TID 31489 Tess-2中的致命信号11(SIGSEGV),代码1,故障加法器0x0

Cocos2d-x:0xC0000005:访问冲突读取位置0xCDCDCDD1

x上(1/2)*(xy)^ 2的微分是x-y

为什么x in(1,2,3):比x == 1或x == 2或x == 3快?

super()上的Typescript错误:预期1-2个参数,但得到0

TypeScript错误-预期有1-2个参数,但有0或更多。TS2556

在R中将(0,1,0,0,1,1,1)转换为(0,0,0,1,0,1,2)