请问这个 ts 类型错误提示怎么解决?

type Types = 'a' | 'b' | 'c'

export function is(p: string) {
  const types: Types[] = ['a', 'b', 'c']
  return types.includes(p.toLowerCase())
}

image.png

阅读 2k
3 个回答

你是说这个意思?

type Types = 'a' | 'b' | 'c'

/**
 * 检测一个字符串中是否存在{Types} 类型中的某个字符
 * @param p 可能存在 {Types} 类型中的某个字符的字符串
 * @returns 字符串中是否存在{Types} 类型中的某个字符
 */
export function hasTypes(p: string) {
    const types: Types[] = ['a', 'b', 'c']
    const test = p.toLowerCase()
    return inTypes()

    function inTypes(): boolean {
        return types.some(item => test.includes(item))
    }
}

function test(data: string) {
    const result = hasTypes(data)
    console.log(data, '->', result)
}

test('abc')
test('9h82313')
test('b5n9w')
test('c')
test('d')
test('6')
test('qkoc')
test('123415b')
test('undefined')
type Types = 'a' | 'b' | 'c'

export function is(p: string) {
  const types: Types[] = ['a', 'b', 'c']
  return types.includes(p.toLowerCase() as Types)
}
新手上路,请多包涵

因为 toLowerCase() 返回的不是 Types,而是 string;

types.includes(p.toLowerCase() as Types)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
Microsoft
子站问答
访问
宣传栏