流类型,安全类型转换,使用通用功能

时间:2019-04-06 19:09:45

标签: javascript type-conversion flowtype

考虑创建类型转换函数的简单尝试:

function Convert<T>(value:mixed, converter:string):T {
  if (typeof value === typeof converter) {
    return (value:T)
  }
  throw new OperationalError('Type mismatch')
}

用途为:

const o = JSON.parse('{"stringval":"hello", "numval":1}');
const s:string = convert<string>(o.stringval, "string");
const n:number = convert<number>(o.numval, "number");

这显然失败了,因为不能将“混合”(值)转换为通用“ T”。但是通过查看代码,我们可以直接看到它“应该”工作,并且有一种方法可以动态地知道类型。 (如果它在运行时不是正确的类型,则会引发错误。)

如何在流程中创建这样的功能?可以将模板类型基于插入的 value (而不是类型)吗?

或者我可以根据给定的类型动态地测试吗? (if (typeof value === T)显然不起作用)。

0 个答案:

没有答案