在TypeScript中将*导入为可迭代数组

Liv*_*ner 8 typescript

如何使用TypeScript访问数组中不同文件中的多个类?

文件夹结构:

??? index.ts
??? models
    ??? index.ts
    ??? image.entity.ts
    ??? user.entity.ts
Run Code Online (Sandbox Code Playgroud)

image.entity.ts:

export class Image { }
Run Code Online (Sandbox Code Playgroud)

user.entity.ts:

export class User { }
Run Code Online (Sandbox Code Playgroud)

型号/index.ts:

export * from './image.entity';
export * from './user.entity';
Run Code Online (Sandbox Code Playgroud)

index.ts(所需输出):

import * as models from './models/index';
// Is an iterable array, instead of a "module"
console.log(models.length) // 2
Run Code Online (Sandbox Code Playgroud)

Tao*_*Tao 6

当你拥有了它,你可以遍历models的只是一个Object.keysObject.valuesObject.entries。请注意,您需要添加es2017--lib使后两者起作用。

如果您真的想models成为一个数组,可以这样做:

形象实体

export default class Image { }
Run Code Online (Sandbox Code Playgroud)

用户实体

export default class User { }
Run Code Online (Sandbox Code Playgroud)

索引

import Image from './image.entity';
import User from './user.entity';

export default [
  Image,
  User,
]
Run Code Online (Sandbox Code Playgroud)

然后像这样导入它:

import models from './models';

console.log(models.length) // 2
Run Code Online (Sandbox Code Playgroud)

请注意,您不需要使用deault导入/导出,但是它们可以为您节省一些* as x