【问题标题】:TypeScript, const/enums typeTypeScript,常量/枚举类型
【发布时间】:2020-02-04 16:24:12
【问题描述】:

我有以下常量/枚举:

export const LENGTH_LIMIT = {
  MAX_INPUT_CUSTOMER_FORM: '500',
  MAX_INPUT_EMPLOYEE_FORM: '500'
};

我想给它一个类型。但是我可以给LENGTH_LIMIT 一个除any 之外的类型吗?或者是any 唯一可以在这里工作的东西?

【问题讨论】:

  • 这不是一个枚举,它是一个对象。枚举使用关键字enum 声明。不同之处在于枚举不会生成任何 javascript 代码来表示对象,但它会将其所有用法(例如 LENGTH_LIMIT.MAX_INPUT_CUSTOMER_FORM)替换为其值('500')

标签: angular typescript enums


【解决方案1】:

1) 这是一个对象,而不是枚举

2) 为什么要给常量一个类型? Typescript 已经为您推断出它们。它推断:

interface LenghtLimit {
    MAX_INPUT_CUSTOMER_FORM: string,
    MAX_INPUT_EMPLOYEE_FORM: string
}

【讨论】:

    【解决方案2】:

    您可以为此使用TypeScript enums。然后,类型将是枚举本身:

    export enum LENGTH_LIMIT {
      MAX_INPUT_CUSTOMER_FORM = '500',
      MAX_INPUT_EMPLOYEE_FORM = '500',
    }
    

    并使用它:

    interface CustomerForm {
        InputLimit: LENGTH_LIMIT
    }
    

    【讨论】:

      【解决方案3】:

      如果你想声明为枚举:

      export enum LENGTH_LIMIT {
        MAX_INPUT_CUSTOMER_FORM = '500',
        MAX_INPUT_EMPLOYEE_FORM = '500',
      }
      

      如果你想在 HTML 模板中使用 LENGTH_LIMIT 类型的变量,你必须给它赋值:

      LengthLimitOptions: any = LENGTH_LIMIT;
      

      在 HTML 中用作:

      <span>{{LengthLimitOptions.MAX_INPUT_EMPLOYEE_FORM}}</span>
      

      【讨论】:

        【解决方案4】:

        你可以创建一个接口例如:

        interface LengthLimit {
            [name: string || any]: string
        }
        

        然后:

        export const LENGTH_LIMIT : LengthLimit = {
          MAX_INPUT_CUSTOMER_FORM: '500',
          MAX_INPUT_EMPLOYEE_FORM: '500'
        };
        

        【讨论】:

          猜你喜欢
          • 2023-03-06
          • 1970-01-01
          • 2018-10-18
          • 2020-11-17
          • 2022-09-23
          • 2019-11-22
          • 2019-12-30
          • 2016-08-15
          • 1970-01-01
          相关资源
          最近更新 更多