首页 > 解决方案 > 使用 if 条件的窄类型

问题描述

代码:

function useQuery(key?: string) {
  const searchMap = new URLSearchParams()
  if(!key) {
    return searchMap;
  }
  return searchMap.get(key)
}

const val1: string | null = useQuery('code') // type should be "string | null"
const val2: URLSearchParams = useQuery() // type should be "URLSearchParams"

对于var1,TSC 抛出错误:

键入'字符串 | URL搜索参数 | null' 不可分配给类型 'string | 无效的'。类型“URLSearchParams”不可分配给类型“字符串”。(2322)

对于var2,TSC 抛出错误:

键入'字符串 | URL搜索参数 | null' 不可分配给类型 'URLSearchParams'。类型“null”不可分配给类型“URLSearchParams”。(2322)

如何正确制作这两种类型?

打字稿游乐场

标签: typescripttypescript-typings

解决方案


推荐阅读