首页 > 解决方案 > 我知道的最好的写数组类型的方法

问题描述

所以我正在导入包含以下值的文件(以及许多其他类似的值)

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>即使我们的数组是具有特定值的常量,也使用?使用枚举?

标签: typescript

解决方案


你可以有枚举而不是像这样的常量数组,你可以像这样使用它作为类型

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, /** ............. **/ ];

示例: 打字稿游乐场

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;

}

推荐阅读