Array.prototype.includes 给我“Argument of type ‘string’”不可分配给“never”类型的参数。错误
keys
的类型是 string[] | number[]
,派生自 ID
类型。 id
的类型是ID
。尝试检查 keys
是否包含 id
。
import React, { useState } from 'react';
type DistributedArray<U> = U extends any ? U[] : never;
type ID = string | number;
function Comp() {
const [keys, setKeys] = useState<DistributedArray<ID>>([]);
const id: ID = '1';
keys.includes(id)
return null;
}
TSC 在 keys.includes(id)
语句中引发错误。
“string”类型的参数不可分配给“never”类型的参数。
从JS的角度来看,代码没有问题。
<一href="https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAJQKYEMDGMA0cDecCuAzkgMoowoxJwC +cAZlBCHAORSoYsDcaAUDzAE8wVACLBCMKMABG+SgBMAglCgoBAHgCqAPjgBeOJrhIAHpQB28wnBTmBcAPyGA2gF04ALj jmkANyRQvilCcACSIvpwElLmaOZwAD7e+CDSAbw8dPjmGMAQ5nAAwkxgABQAlLg8cDVwaPkScM4A1kgChNjEMADSbYT uBkSk5JTqYtEyckhKKmrq4drapW7lvLV1DfDA8l7hkSwajNzVta3tAHTAOQA2+PJIhkXb5Xzr7DD4UAXm+NfXvNQeEA" rel="nofollow noreferrer">TypeScript Playground
版本:TypeScript 4.5.2
The type of keys
is string[] | number[]
, derived from ID
type.
The type of id
is ID
. Try to check if keys
includes the id
.
import React, { useState } from 'react';
type DistributedArray<U> = U extends any ? U[] : never;
type ID = string | number;
function Comp() {
const [keys, setKeys] = useState<DistributedArray<ID>>([]);
const id: ID = '1';
keys.includes(id)
return null;
}
TSC throws an error in keys.includes(id)
statement.
Argument of type 'string' is not assignable to parameter of type 'never'.
From a JS perspective, the code is fine.
version: TypeScript 4.5.2
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)