我在TypeScript文件中声明了一个常量,后来在某个时候声明了一个常量 我需要将它们放在一个变量中,但我无法弄清楚它是如何完成的。
这是我的代码:
const Color: {} = {
RED: {
CODE: "RCB",
PRICE: 15.70
},
BLUE: {
CODE: "BBC",
PRICE: 18.70
},
GREEN: {
CODE: "GTA",
PRICE: 13.70
},
};
let price: Color = Color.RED.PRICE;
console.log(price);
let price: Color = Color.RED.PRICE;
不起作用,我收到以下错误消息:
Cannot find name Color
和:
Property RED does not exist on type '{}'
答案 0 :(得分:2)
您使用显式类型注释来告诉打字稿编译器Color
是一个空对象(: {}
)。您只需要删除它,编译器就会推断出变量的正确类型。
const Color = {
RED: {
CODE: "RCB",
PRICE: 15.70
},
BLUE: {
CODE: "BBC",
PRICE: 18.70
},
GREEN: {
CODE: "GTA",
PRICE: 13.70
},
};
let price = Color.RED.PRICE;
console.log(price);
price
也是一个数字,同样,您可以让编译器进行推断。
如果要声明一个变量,该变量是Color
对象中的属性之一,则可以使用类型查询:
let red: typeof Color[keyof typeof Color] = Color.RED;
typeof Color
获取常量的推断类型,[keyof typeof Color]
告诉编译器我们希望合并所有Color
属性类型。
我们还可以将此类型放入别名以供以后使用:
type ColorMember = typeof Color[keyof typeof Color];
let red: ColorMember = Color.RED;
答案 1 :(得分:1)
这样做:
const Color = {
RED: {
CODE: "RCB",
PRICE: 15.70
},
BLUE: {
CODE: "BBC",
PRICE: 18.70
},
GREEN: {
CODE: "GTA",
PRICE: 13.70
},
};
var price = Color.RED.PRICE;
console.log(price); //15.70