В TypeScript я могу сделать что-то вроде этого
interface LoginInterface {
username: string;
password: string;
}
const MyObject = {
credentials: null as LoginInterface,
otherInfo: "I'm something not relevant to this question"
}
В основном я определил интерфейс LoginInterface, затем я создал переменную MyObject, которая является объектом со многими свойствами (в данном случае только двумя), одно из этих свойств credentials должно иметь значение по умолчанию null, но я хочу заявить, что это типа LoginInterface, с TypeScript это очень просто, так как я могу использовать ключевое слово as. Как я мог воспроизвести это с помощью Поток?
Теперь я знаю, что могу сделать что-то подобное
const MyObject: {
credentials: LoginInterface,
otherInfo: string
} = {
credentials: null,
otherInfo: "I'm something not relevant to this question"
};
Но я не хочу определять тип для MyObject. Я просто хочу определить тип для свойства credentialsMyObject, аналогично тому, как я могу добиться этого в TypeScript?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Flow определенно не допустит этого, потому что это небезопасно. Одна из главных причин использования Flow - предотвращение ошибок нулевого указателя.
Чтобы явно указать, что значение - null, а мог - это LoginInterface, вам нужно сообщить Flow, что значение имеет тип ?LoginInterface, который совпадает с null | LoginInterface.
Если вы действительно не можете сделать это с именованным типом, вы можете сделать это встроенным в:
const MyObject = {
credentials: (null: ?LoginInterface),
otherInfo: "I'm something not relevant to this question"
}
Вам нужны круглые скобки, чтобы Flow мог отделить выражения типа от остальных.
Спасибо за быстрый прямой ответ!