Array.prototype.includes 给我“Argument of type ‘string’”不可分配给“never”类型的参数。错误

发布于 2025-01-11 11:03:03 字数 1090 浏览 0 评论 0原文

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.

TypeScript Playground

version: TypeScript 4.5.2

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

毅然前行 2025-01-18 11:03:03
import React, { useState } from 'react';

type ID = string | number;

function Comp() {
    const [keys, setKeys] = useState<ID[]>([]);
    const id: ID = '1';
    keys.includes(id)

    return null;
}

import React, { useState } from 'react';

type ID = string | number;

function Comp() {
    const [keys, setKeys] = useState<ID[]>([]);
    const id: ID = '1';
    keys.includes(id)

    return null;
}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文