gpt4 book ai didi

typescript - 使用 Typescript 推断键名

转载 作者:搜寻专家 更新时间:2023-10-30 22:01:13 25 4
gpt4 key购买 nike

以下代码在 Visual Studio Code 中运行良好:

type MyType = {
id: number;
name: string;
};

type MyTypes = { [name: string]: MyType };

const MY_TYPES:MyTypes = {
ONE: { id: 0, name: 'name0' },
TWO: { id: 1, name: 'name1' }
};

console.log(MY_TYPES.ONE); //Intellisense error
console.log(MY_TYPES['ONE']);

日志语句编译和输出相同的内容,但第一个在 VS Code 中生成错误并声明“属性‘ONE’在类型上不存在”。我有没有其他方法来构建我的代码,以便 VS Code 可以自动推断/自动完成 MY_TYPES 具有属性名称 ONE 和 TWO?

最佳答案

如果您使用 indexed object那么您只能使用索引访问属性:

type MyTypes = { [name: string]: MyType };
console.log(MY_TYPES["ONE"]);

那是因为编译器只知道对象有字符串类型的key,并不知 Prop 体的key。

如果您希望能够使用点表示法访问属性,那么您需要这样做:

type MyTypes = {
ONE: MyType;
TWO: MyType;
}
console.log(MY_TYPES.ONE);

但是你可以这样做:

type MyTypes = {
ONE: MyType;
TWO: MyType;
}

const MY_TYPES = {
ONE: { id: 0, name: 'name0' },
TWO: { id: 1, name: 'name1' }
};

编译器将推断MY_TYPES 的类型。

关于typescript - 使用 Typescript 推断键名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41004314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com