Array.includes 方法该怎么使用呢?
如下图,如果确定 key 是属于具体的一个类型,那调用 inclues 还有什么意义。。。
复现 code 如下:
type TFailSqlType = "exception" | "api" | "resource"
const FAIL_LIST: TFailSqlType[] = ['exception', 'api', 'resource'];
FAIL_LIST.includes('2')
Array.includes 方法该怎么使用呢?
如下图,如果确定 key 是属于具体的一个类型,那调用 inclues 还有什么意义。。。
复现 code 如下:
type TFailSqlType = "exception" | "api" | "resource"
const FAIL_LIST: TFailSqlType[] = ['exception', 'api', 'resource'];
FAIL_LIST.includes('2')
重要的话说三遍。
你这代码明明已经限定了数组里所有元素都是
TFailSqlType
、还想传个确定一定肯定不是TFailSqlType
的对象进去,TS 当然会给你报错了,因为你那个2
是在编译期间就存在的一个字面常量,它的类型已经是确定的了。如果你是想验证来自外部传入的(比如这个参数是用户手动输入、或来自某个 AJAX 接口返回字段)、类型在编译期间并不能确定、等到运行时才能知道的,那你要么把这个变量声明成
any
、要么就手动断言一次: