Я новичок в TypeScript и пытаюсь понять, как можно использовать приведение типов. Я работаю с API, который определяет функцию, подобную следующей:
function foo(a: number): number | undefined;
Я хочу выполнить функцию для возвращаемого значения этого числа, чтобы всегда безопасно преобразовывать его в число, но я получаюошибка:
function myFunc(bar: number | undefined): number {
if (typeof bar === undefined) {
return 0;
} else {
return bar; // error ts(2322)
}
}
Где ts(2322)
расширяется до Type 'number | undefined' is not assignable to type 'number'.
Type 'undefined' is not assignable to type 'number'.
Мне кажется, что это то, что должно быть определено во время компиляции. Ясно, что мы обращаемся только к else, если typeof bar === number
, но пробуем это в следующем фрагменте кода:
function myFunc(bar: number | undefined): number {
if (typeof bar === number) { // error ts(2367)
return bar;
} else {
return 0;
}
}
Сообщение об ошибке: This condition will always return 'false' since the types '"string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function"' and 'Requireable<number>' have no overlap.
На данный момент я довольнопотерял на том, что возможно с приведением в TypeScript. Есть ли способ достичь моих целей? Любая помощь будет принята с благодарностью.