如何在打字稿中导入嵌套接口

How to import nested interfaces in typescript

当我导入嵌套界面时,Typescript VS 代码中的 predicatext 向我显示高级界面中的项目,而不是嵌套界面中的项目。

“示例”界面中有一个 [key:string] 这是否意味着我不能将 predicatext 用于此类数据结构(即使它会检查类型安全),或者它只是不能正常工作我设置错了。

例子

export interface Item {
    id: number;
    size: number;
}
export interface Example {
    name: string;
    items: {
        [key: string]: Item
    };
}

然后文件 2

import {Example, Item} from '../utils/interfaces'

const obj = {
    name: "test",
    items: {
        "a": {
            id: 1,
            size: 10
        },
        "b": {
            id: 2,
            size: 34
        }
    }
}

结果

预测文本适用于第一级界面,但不适用于此后例如

console.log(obj.            // predictatext offers two options: items & names
console.log(obj.items.      // predictatext offers :    NOTHING

问题不在于嵌套接口。以下内容也不会自动完成:

interface Example {
   [key: string]: number
}

不能自动完成,因为密钥可以是任何东西。同样,obj.items. 之后的任何内容都是有效的。

如果只允许某些项目,您必须在界面中指定它们。