0
Если у меня есть массив союза я могу проверить TYPEOF значение таким образом:Машинопись - TypeOf массив типов профсоюзных
//case 1
function something1(a1: Array<number | string | boolean>)
{
for (const v of a1)
if (typeof v === "number")
v; //v is number
else if (typeof v === "boolean")
v; //v is boolean
else
v; //v is string
}
Если у меня есть объединение массива я мог бы сделать это таким же образом:
//case 2
function something2(a1: Array<number> | Array<string> | Array<boolean>)
{
for (const v of a1)
if (typeof v === "number")
v; //v is number
else if (typeof v === "boolean")
v; //v is boolean
else
v; //v is string
}
, но я хочу, чтобы избежать проверки типа внутри цикла:
//case 3
function something3(a1: Array<number> | Array<string> | Array<boolean>)
{
if (a1.length === 0)
return;
if (typeof a1[0] === "number")
a1; //should be number[]!! but it is number[] | string[] | boolean[]
if (typeof a1[0] === "boolean")
a1; //should be boolean[]!! but it is number[] | string[] | boolean[]
if (typeof a1[0] === "string")
a1; //should be string[]!! but it is number[] | string[] | boolean[]
}
но a1 не распознается как число [] или строки [] или логическое значение [] ,
Но это имеет смысл. Поскольку все элементы массива имеют один и тот же тип. Можно ли это достичь?
Я использую бета-версию TypeScript 2.0.