使用联合类型

提供与联合类型匹配的值很容易 - 只需提供与联合的任何成员匹配的类型即可。 如果你有一个联合类型的值,你如何处理它?

It's easy to provide a value matching a union type - simply provide a type matching any of the union's members. If you have a value of a union type, how do you work with it?

SZ7iWkAuboJd8OcQjXzRxO5nYGfgv6t7qxcq5mETNxZuU/bjEqfBDyjI2OcyF683wYi2xOpIxJHKX4nTM48WEaPUSKQO+rMKGe2WdH8YjYFvXHoYOosSa5/g+nGyL5HEpPePZN25QGu2/VE4WQI99E4e6l7SZubT/Vt4zfE3ybrevL3ffLDKnMiyYVftMz5h+PmVUS6QG1rb04H33Z1wxqsj4zXlQsKMRLCfFicd64WCaeGY/BtLB7JJ9As7cXav2Tr8l/upxokZvHzRS2q1g/CWQTb2/RyrccFcUyuaGaXzaHKVkT9ZxD73U9bb9K740ANldMN3F0sWzvKHcM+pazs4iB8t3ZDgZ3T+3k9L+hlVg4BQ4aSVVaNaHEwU601zht6Yo8l9qtny20FkW9WSzp1snDdQLmyy/zdUErmpfiW5hx0BSMocG3R6dckspzAEaPXuWudBf1HNCfpHmN0sbz/cebpimlWk00KI6rCtG10kEzM/WKeyhqSp5AlRKBf3TulYV3nfMSD21k80b8KUJQdRMuWEMYoLwgSBQ0nyvrqNq5JjX50LwOEmTuNJCKcz7SWR3DD0KESFV+7biOUD1X0enKE1CpIejgej7iN/dQs=

function printId(id: number | string) {
  console.log(id.toUpperCase());
}

iQag9NnLUktGo/PfT4Pi5NXhYkDbGmpxvwj3ULi9qthvSUzXNgsMJhAAf02hoLobk4eg/kwTo3y3rfUTyhqGzaC2JLj4ooAeUrepJMyL4epT88CMWzqYsgfVcfUbcDWOLzzjQXxbsqArDoH1I855duWMBeTdF4kd/9vxDxceb0T+HZRQyKWeC7kueCZa79UlRZfvryTssmB+hXYjjad76cAceMr+4Sy0aQWET9x4QYi3gUWKR5clU9z2cd0Du5ZMBClqYFxzbrPmm750nIbaO2IAv0eWnVl+1BA6EMuZ/509dxubmiVpK6B0PYCcW6MHEqjgboz3BeYrfAwsVJ04ZWzykNtbw4wdiWTfYjoJmITuP12moUNwKWx+7AgkOrFm+IhF1LK+MFRberqwy3fT3bgVX/ViFGMS/9dA8tpkpKgbwFuHBMv0IcuhRahCP/YaOII5srS2AQeMPPPECtjn+RJ17UT6oKjxF07uL0+1aUXaUDJ1qIMH83HVBS+ahXW1pxQ6KRVlpIo0tps4HsGks5uq1HExNUD5uqNhSpoe13OQbA2+tsH3b5sL8vgQxXAjWgcIeLaGflPSGmSRWMnZVoacZImH3YTX/Ep55AyhhiM=

pdRNPpIGUD3D44uSNq7mFASofqsngLsvnNWg0AXZrZttv1csGBPatn6oYueJO5Z8gpKyR5BFtRtGzfevU8hpV+/BG9xhaW80yGRzXctARtqo9CYHMF+nQeByzUSSGkTvPJbE9py9b5usb4suXDa5cfQwVYE62McgWtLBMy5awd3ObBYd4BkHnxq/AHb74e3gub5IYlIGHbyqQH+H0wCzaZ3AfOzqmEqjigb+krRoe53QAn91HFbx8ER8iykIsE23qLeQ7lKmOqIH8+ZCjs5zDKfOZ5lh28qG5DK8WVrQLnE8noL90CmfDe8XroaMSfaMSUFVgGIRtOZrSQJI/NxFsB8mYcZoaCZqAHb3ncyYEqM=

function printId(id: number | string) {
  if (typeof id === "string") {
    // In this branch, id is of type 'string'
    console.log(id.toUpperCase());
  } else {
    // Here, id is of type 'number'
    console.log(id);
  }
}

nroNjPDdF90HIWgN30BO8QTD5L49UKyJpice3hcjp+aM5nVrv91iznoZEVf3iAiBRjwWdCyHuwymqpE/4hQDyCOnoZTaiAtUYb/5Ilx+S+da0e3cZvfWS6dazbI40WjCDZZrmKAE9CfyO1QVeOgSk2Us1b/t3rYBJkhuLSuvUq0FOVJAHIze22qw/U8c7OTfAEeuKo5ypdciux/6kNyMXIJBswhUag8J9s8pMvMbgHA=

function welcomePeople(x: string[] | string) {
  if (Array.isArray(x)) {
    // Here: 'x' is 'string[]'
    console.log("Hello, " + x.join(" and "));
  } else {
    // Here: 'x' is 'string'
    console.log("Welcome lone traveler " + x);
  }
}

cn1cpiCyOjV3wLrwFsNsPaTcP1Xlv2egQYFHejhSL46EdvO/DMoVaNlUGYshuXPdG/PkHctGEXK6pW5LU3zOLCukjM4I7RrgfaCNAqlxGgGsEU27lhtayAs8zvq2OoNG1+aiNyfUM4UeHP5SSWyczEMIEJLW1+HxN7L2ENsXCdWAFI6D01AH5JkxMgmKXVnaSPE+YUvHFuj9UCJFcBB4NnEFov4cxWPxF0dWss8zjfdlQ80tcN6mjm1WbxaX9mr5G43paAq07RflYDVGuVFDFaiWZ6ci66xJxllo8cRfHaehV/gaevruP+/VqIwPC1Pz1R3bl8JKXfQZnPqh8v4oxbuZHw1Jx4iAvvGxFoS4zqV/bfNfSJMgZvF/kIL8zXZH1aF5VsNYC0KNhA6MvI2Jmex0EhldL056YXNhRe2sDWHdUtwsy/k+as2h1HtOe8wiZvk6ZaWkpO0e8uihuZG8CLUiS1kNGCJqegLj4jm/IJmf9gS3oXfD2szHMOErCWhVRMNryhaVH863TUu6DxNANg==

SXSEYUqyocTRpdmbNLzK9zqyf/G91d2pl4KG1TMyNfUmdOTwJFNX8gZQ8+JIewtSeBi2hpLMgnvN7y/s5Xg3IY+8igUZJjT+kczpvu6ep6RnydAh+IghfY7NxhQfQ79EM7t1JSMefDs6+eliujhOiBXcJvMNFbZFQLbo4VC757VmHQ2ezkfOfqIeyfRRVfARgn2qPuovSkyRal647UYQSTQDu1DYjmu2dRWz8ICVEChPEtrCgy+5haZBk2UFvpyGqGugKRZls2VgxsaaT39kZuybNs9H+ig7qpNw2qG49fNMcC/1I3PFT2xaaR5W+h2+ID9Wu7uQ8awbj4KWIdKrqewPUhRXUfNHwL/zWeaZDKWmXehGK+42KnqHTugfIuXC6OAiXr5wUzDQ1EnR/O244VWIypk+WVmP5oJnTI5h9xH/RS6gSUsYHlFqI99cLXOQcvDsH4j2zY9jP8W8WItmMUzNJWy2EtWYHLYJqg6he16wqiGseTd1Eol9RV8nWP6RZBeihipxLBoJNeSdO+VvoXuQv1bS6pGmN83xvmdFC74XOHpNg5M9iEbKwN7km8fHbQ1cB3pfNME850G6QG6FQcfv9vQt4xt4FXafybd615cGFtQq+Tsk1Zx03i9E6rRNhWJXHG0MpG/K/jqFhhw+PyYRctzbNQQZqISwMOskZKo=

// Return type is inferred as number[] | string
function getFirstThree(x: number[] | string) {
  return x.slice(0, 3);
}

wqojJntlYl7oAcQh8H1XUCOzUfYofHplrfgNu0AP+kp2odyNhYSS1Eq0OJ14UgANQa7DilBE8Guq7vFp05HIJMaH4cFKQ6V3hgTahs0JHu4YF7LsQeBmkv1gZWLJras5foQfQjmVXeFjBqkGPLfbV0kt95Fly9IcuCQCRlFtQNO2aVkZvG3rzWhiLpdH91oi3bHptyiGLCuF4JNFI5yjFXiBwcTEeUHjHdF05FVTu52usfgSrAjHyZ5pCtomqoYOi9a2WrRWpP8y7mnGCN62YGcWBhM0FtF+mT6GLBcAuGQoNGQnCSEMBy7i/vsEiq/sZGFmakc6VWi3zLQFiEcfj5ooGnghFjxCsvOpm6yN1bXR9z1OUt9mCEdCNKYbuSZ46uZWJFflORTS7bnrGlMiFQfQnXLEL7W4TaLNtBTvvKjGPJFfTTO3VlKfVPI+z8hbkqn+9J5RAJxi1PBSuxw+jYhwcEjMe3Cph9NC8ARkoY4RLoEj6HyrZhYt7xevYSjCQPWKdWhMZ+BEHVAdU9W/sK57bv5vqemRozY1ZaD0DaU2aroxxiulwdN6d7Xu+aQT9IANdLLpFAQtkPz27gShw76MuJW+zZlH7LhNQpW7eJjbHQ+DhjPLZNHOJRtRJFWkOxz37QkFM4G6ewqfi7M8s9RFIMY4Fo6XQk2opZd7pxBwvtMoQPGkV2QxkoQKSkiP2CY8kUeQryMHxLDYMjftet3qsQpw9BeMB/hgdLb8g72DY1N8qCt0O2FAz6l7VaVw+ndOOPuuzN3M3biTIpyYMZsS4PXEQMVLDIoxMpQsQcJzJ/45DpGm4EdXq+ufjzGh63r7/HZoymtwMT1MksLCvYkiPXeYzUp5KN4T7DspDRedurnKmsVu8QQ7Gh1fVMNfvakk2vJkvYKVW0H67WyKgB5sUgDPoKXjtZO4BlXGKa1CmsfeQVzF/tnIskNSMqDo0U2+sq5zSZR+3JfizmCNBbM2voP5JwFQTosMEsiJ2QDiNntiy6h/COWcTfsAmo3z8yHdSQMh9Bg1AsLXHDXxk049g7k6DibsDswf6dTNKbcPT5+sc6xLXGVRBLlDscDIM42MCt5qtLOtoNM6S/ohzjWgWp8HDaAPbWL/N7u45w1Cpky0YyDD3wkt6sruqAYqq+Ezw7Ao361qg2jMvOh+s+BTJYlTTiZhA3skCaHgErkuxQ+tAe/v0A1OBNVE8FMLm4oNUL0W/2SSTPgo3+a106DVfNampoGNQDnA5CqqogZ5LTSQhYypAo40gEYVKtY7g2b3d6xJy4q1OdH0Nm1mwNURqfEZ0MxE80UPO8DPrfa9WosmJj11KYNytPf3mTHYPdrrFytV5m8laX3h56IEpiZSF8ChhCoWLcmwGUdkXD9+aB77o6vLReSw6Vr0xSrjuLDUf2Z9DEMWx01DSd7vKWn7NyDwVNI7TVGYnY7xGb/5OYV6YLK5An8wjM0h3uIxJkBlJ+xtizPcNELXmFO5fTd5xmA9aKeg0+fOHQTN+RhJRnMfI3BmajnuNhiBmwqfGb1IJFlEjVV9ypuMyxl6jFQ0t2fwEyLe5oQv1FnLFcd/dxKIvYHZyPKndAKdAdiGqOBs/UcO2QZkJ6Q+ADHzX6GxnjD2/89zHPW7x04h+4MLeUsaBWmwFzXHG7IMXFg442RPIbnKcx5NaCc3zfKaYt7hiHZY6JQ5IJTOn+HmS2dsVZAgB5sTMAwoqJT72xOHmny/xkMNY3Mi2mMKaim2v/OqxxexytWPf9uMTBI1TYA=