Почему TypeScript не выводит значение null в типе возвращаемого значения моей функции?Javascript

Форум по Javascript
Ответить
Anonymous
 Почему TypeScript не выводит значение null в типе возвращаемого значения моей функции?

Сообщение Anonymous »

Я использую TypeScript 5.5.2, и у меня есть вспомогательная функция, которая может возвращать либо объект, либо значение NULL.

Однако TypeScript определяет только тип объекта и полностью игнорирует значение NULL в возвращаемом типе.
Вот моя функция:

Код: Выделить всё

import type { Voucher } from '@/api/vouchers/index.types';

export const getStepperData = (steps: Voucher['steps']) => {
if (!steps || steps.length === 0) {
return null;
}

return {
labels: steps.map((step) => step.title),
activeStep: steps.findLastIndex((step) => step.is_active) + 1,
};
};
Но предполагаемый тип возвращаемого значения:

Код: Выделить всё

function getStepperData(
steps: Voucher["steps"],
): { labels: string[]; activeStep: number }
TypeScript не включает значение null в выведенный тип, хотя функция явно возвращает значение null в одной ветви.
Моя версия TypeScript:

Код: Выделить всё

"typescript": "^5.5.2"
Соответствующая часть моего tsconfig.json:

Код: Выделить всё

{
"compilerOptions": {
"jsx": "react-jsx",
"removeComments": true,
"sourceMap": true,
"baseUrl": ".",
"module": "ESNext",
"moduleResolution": "bundler",
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"forceConsistentCasingInFileNames": true,
"strict": false,
"noEmit": true,
"allowJs": true,
"checkJs": false,
"lib": ["DOM", "ESNext", "WebWorker"],
"paths": { "@/*": ["./src/*"] },
"isolatedModules": true,
"skipLibCheck": true
}
}
Почему TypeScript не выводит значение null в возвращаемом типе


Подробнее здесь: https://stackoverflow.com/questions/798 ... eturn-type
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»