如何正确地在函数中编写使流程快乐的条件?

How properly write a condition in function that makes flow happy?

如何在函数中正确编写条件使流程愉快?

我的函数应该能够处理 2 种不同的数据类型。

link: https://flow.org/try/#0C4TwDgpgBAqgzhATgZQJYFswBtoF4oBQUUA3gD5HEDUAdgIboQBcUcwiqNA5gDSVRU4AV0QQAcg2at2nXpTIBfAgVCRYCFEMiJi+SuX7UaqAMYBrCYxZsO3PsUXLV0eEij5XKDNmhl1SZC0kAG5lAgAzIRoTYFQAexooLghgTwAKIQ0WTwBKUkpUcIyNADp6RjySSgBIUWARRMykEuFRSwhKBSgILAR84ig6hqgmxDLTC0lOgi6oIA

// @flow

type UserSimple = {|
  +name: string,
  +sureName: string,
|};

type UserSuper = {|
  +nickName: string,
|};

type User = UserSimple | UserSuper;

function getUser(user: User) {
  if (user.name) {
    return user.sureName;
  }
  return user.nickName;
}

没有多余的代码恐怕不行。

参见 https://github.com/facebook/flow/issues/8079

现在您可以添加一些额外的检查和注释,说明此检查仅针对流。例如:https://flow.org/try/#0C4TwDgpgBAqgzhATgZQJYFswBtoF4oBQUUA3gD5HEDUAdgIboQBcUcwiqNA5gDSVRU4AV0QQAcg2at2nXpTIBfAgVCRYCFEMiJi+SuX7UaqAMYBrCYxZsO3PsUXLV0eEij5XKDNmhl1SZC0kAG5lAgAzIRoTYFQAexooLghgTwAKIQ0WTwBKUkpUcIyNADp6RjySSgBIUWARRMykEuFRSwhKBSgILAQoQqg05zjwqCbEMtMLSXdcfAByG1l5yv46hrHS43N2zoIuqCA