簡體   English   中英

帶 boolean 的可區分聯合體

[英]Discriminated unions with boolean

問題

與 boolean 類型的歧視聯合似乎僅適用於真正的關聯類型。

復制器

interface DummyA {
  hint: true
  a: string
}

interface DummyB {
  hint: false
  b: string
}

type Dummy =
  | DummyA
  | DummyB;

const dummies: Dummy[] = [
  {
    hint: true,
    a: "a"
  },
  {
    hint: false,
    b: "b"
  }
]

dummies.forEach(value => {
  if (value.hint) {
    value.a
  } else {
    value.b
  }
})

預期結果

如果它適用於 true,它應該適用於 false。 這是正常行為,還是更像一個問題?

如果您使用strictNullChecks這將按預期工作。 如果您不使用嚴格的 null 檢查(我懷疑基於您的問題),如果您使用=== true ,則可以使其正常工作


dummies.forEach(value => {
  if (value.hint === true) {
    value.a
  } else {
    value.b
  }
})

游樂場鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM