首页 > 解决方案 > 返回类型不包括“未定义”但 switch 是详尽的

问题描述

我不明白这个最小示例中的错误

interface List {
    "A": false,
    "B": false,
}

// Function lacks ending return statement and return type does not include 'undefined'.ts(2366)
// Why?
function foo<T extends keyof List>(letter: T): List[T] {
    switch (letter) {
        case "A":
            return false
        case "B":
            return false
    }
}

什么值可以letter使我的函数返回未定义?

标签: typescript

解决方案


以下应该照顾您的用例:

function foo(letter: keyof List): List[typeof letter] {
  switch (letter) {
    case 'A':
      return false
    case 'B':
      return false
  }
}

推荐阅读