Это мой код. У меня есть объединение типа CellType. Я предполагаю, что функция никогда не будет вызываться с null, ничем, undefined или simular.
Я не хочу иметь какое-либо предложение else или окончательный оператор возврата, так как я знаю, что все случаи обрабатываются. Но почему-то мне чего-то не хватает. Я играл с флагами. Я получаю предупреждение
«В функции отсутствует конечный оператор возврата, а тип возвращаемого значения не включает 'undefined'. (2366)» для возвращаемого значения CellType.
class Empty {
};
class MyError {
type!: number;
}
type CellType = number | string | boolean | Empty | MyError;
function plusOne(v: CellType): CellType {
if (typeof v === 'number') {
return v+1;
}
if (typeof v === 'string') {
return -1;
}
if (typeof v === 'boolean') {
return -1;
}
if (v instanceof Empty) { return 1; }
if (v instanceof MyError) { return v; }
// return { 'type':-1}
}
console.log(plusOne(10));
console.log(plusOne("hej"));