Я пришел из фона Typescript и перенес статическую проверку типов в проект Python, над которым я работаю (используя mypy).
В Typescript допустимо возвращать значение null из функции, которая аннотирована для возврата чего-то другого, то есть строки:
function test(flag: boolean): string {
if(flag) {
return 'success';
} else {
return null;
}
}
Также допустимо аннотировать вашу функцию, чтобы иметь несколько потенциальных типов возвращаемых значений, то есть строка или логическое значение:
function test(flag: boolean): string | boolean {
if(flag) {
return 'success';
} else {
return false;
}
}
Но в python, использующем mypy, я не могу возвращать None из функции, которая аннотирована для возврата str
.
def test(flag: bool) -> str:
if flag:
return 'success'
else:
return None
# [mypy] error:Incompatible return value type (got "None", expected "str")
Кроме того, я не вижу способа аннотировать несколько типов возвращаемых данных, т.е. str | None
.
Как мне подойти к чему-то подобному, используя mypy? Функции, которые возвращают None из состояния ошибки, находятся по всей моей кодовой базе.