为变量分配常量值

时间:2018-09-26 09:56:00

标签: javascript typescript

我在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 '{}'

2 个答案:

答案 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