首页 > 解决方案 > 使用属性定义 Typescript 类型,然后定义任何其他键,但属于递归类型

问题描述

type ParameterInfo = {
    required?: true;
    pattern?: RegExp;
    // other known keys
    [otherKeys: string]: ParameterInfo;
}

所以我可以在它下面有一个ParameterInfo0-many 嵌套ParameterInfo的 s,例如:

{
    user: { // this is a ParameterInfo
        required: true,
        username: { // I'm a ParameterInfo, too
            required: true,
            pattern: /.../,
        },
        password: { // I'm a ParameterInfo, too
            required: true,
        },
    },
}

使用顶部的类型定义,所有已知键(例如required, pattern)都会突出显示并显示错误:

'true' 类型的属性 'required' 不可分配给字符串索引类型 'ParameterInfo'。ts(2411)

标签: typescript

解决方案


推荐阅读