我知道的写入数组类型的最佳方法

时间:2020-08-17 18:43:59

标签: typescript

所以我要导入的文件包含以下值(许多其他文件都这样)

export const COLUMN_TYPES = [
  "integer",
  "string",
  "boolean",
  "datetime",
  "image",
  "images",
  "text",
  "auth_key",
  "enum_type"
];

现在,我不希望上面的类型为Array<string>,因为我确信它只会包含值。

如果我不写类型而只是将其导入,则会出现以下错误

Cannot find module 'src/constants' or its corresponding type declarations.

解决此错误的最佳方法是什么?使用Array<string>,即使我们的数组具有特定值是恒定的?使用枚举?

1 个答案:

答案 0 :(得分:2)

您可以使用枚举而不是常量数组,并且可以将其用作此类

export enum COLUMN_TYPES {
  integer,
  string,
  boolean,
  datetime,
  image,
  images,
  text,
  auth_key,
  enum_type
}


var types: COLUMN_TYPES[] = [COLUMN_TYPES.auth_key, COLUMN_TYPES.boolean, /** ............. **/ ];

示例: Typescript Playground

更新后的CRice答案

例如,您可以将状态定义为这样的枚举

export enum ItemStatus {
  REJECTED = 2,
  REMOVED = 4,
  APPROVED = 6,
  PROCESSED = 7,
  PAYABLE = 8,
  PARTIALLY_PAID = 9,
  PAID = 10,
}

因此在您的商品模型中,您将使用枚举作为状态类型

export interface ItemModel {
   // .......
   status: ItemStatus
}

在组件中,您可以导入ItemStatus并在条件中使用它

用法示例

import { ItemStatus } from 'path';
if(item.status === ItemStatus.PAID) {

}

switch(item.status) {

  case ItemStatus.REJECTED:
  break;
  case ItemStatus.REMOVED:
  break;
  case ItemStatus.APPROVED:
  break;
  case ItemStatus.PROCESSED:
  break;
  case ItemStatus.PAYABLE:
  break;
  case ItemStatus.PARTIALLY_PAID:
  break;
  case ItemStatus.PAID:
  break;

}