You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

@types/check-types接口缺失in定义致TS报错,如何扩展类型?

如何扩展@types/check-types的类型定义以支持assert.in?

问题描述

我使用以下代码时:

assert.in(name, ['values', 'some',])

触发了TypeScript错误:

Property 'in' does not exist on type 'ExtendWithAssert<CheckTypePredicates> & ExtendWithAssert<Pick<CheckType, "not" | "maybe">> & AssertFunction'.

检查后发现,@types/check-types的类型定义文件(index.d.ts)中缺少了in方法的类型声明,需要补充的内容如下:

interface CheckType {
    // ...
    in(a: any, value: any[]): boolean; // <-- 需要添加这行
}
type CheckTypePredicates = Pick<
    CheckType,
    // ...
    | "in" // <-- 需要添加这行
>;

解决方案:手动扩展类型定义

在你的项目中创建一个自定义类型声明文件(比如src/types/check-types.d.ts),写入以下内容来扩展原类型:

declare module 'check-types' {
    interface CheckType {
        in(a: unknown, values: readonly unknown[]): boolean;
    }

    type CheckTypePredicates = Pick<
        CheckType,
        | "in"
        | "is"
        | "maybe"
        | "not"
        | "has"
        // 可根据原类型定义补充其他已存在的属性,保证类型完整性
    >;
}

保存后,TypeScript会自动合并原类型定义与你扩展的部分,assert.in的类型错误即可解决。

更新:相关PR已被接受,后续版本的@types/check-types会内置该类型定义,无需再手动扩展。

内容的提问来源于stack exchange,提问作者user3142695

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 16:32:42