Я предполагаю, что вы используете --noImplicitAny
и --strictNullChecks
, поскольку именно так я могу заставить эту ошибку произойти.
Проблема в том, что предполагаемый тип свойств в returnObj
равен null
.
Возможно, вам лучше всего создать интерфейс и использовать его:
interface Stuff {
date: string | null;
from: string | null;
until: string | null;
}
class Example {
static test(): Stuff {
let returnObj : Stuff = {
date: null,
from: null,
until: null
};
returnObj.date = 'some string';
return returnObj;
}
}
Другой вариант - использовать отдельные переменные для значений, а затем создать объект в конце:
class Example {
static test(): { date: string | null, from: string | null, until: string | null } {
let date = null;
let from = null;
let until = null;
date = 'some string';
return { date, from, until };
}
}
TypeScript достаточно умен, чтобы обновлять выведенный тип переменной внутри функции, как эта.(Или, конечно, объявляйте типы переменных, чтобы не приходилось выводить.)