Скопируйте TypeScripts 'как' с потоком - PullRequest
0 голосов
/ 25 апреля 2018

В 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. Как я мог повторить это, используя Flow ?

Теперь я знаю, что могу сделать что-то подобное

const MyObject: {
  credentials: LoginInterface,
  otherInfo: string
} = {
  credentials: null,
  otherInfo: "I'm something not relevant to this question"
};

Но я не хочу определять тип для MyObject Я просто хочу определить тип для свойства credentials из MyObject, аналогично тому, как я могу добиться этого в TypeScript?

1 Ответ

0 голосов
/ 25 апреля 2018

Поток определенно не допустит этого, потому что он небезопасен. Одна из главных причин использования Flow - предотвращение ошибок нулевого указателя.

Чтобы явно указать, что значение равно null, но может быть LoginInterface, вам нужно сообщить Flow, что значение имеет тип ?LoginInterface, который совпадает с null | LoginInterface.

Если вы действительно не можете сделать это с именованным типом, вы можете сделать это встроенным с помощью:

const MyObject = {
  credentials: (null: ?LoginInterface),
  otherInfo: "I'm something not relevant to this question"
}

Вам нужны скобки, чтобы Flow мог отделить выражения типа от остальных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...