Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/flippiecoetser/list

TypeScript List<T>
https://github.com/flippiecoetser/list

Last synced: 4 days ago
JSON representation

TypeScript List<T>

Awesome Lists containing this project

README

        

# TypeScript List<T>

## Problem List<T> solves
Using the **filter** method of an **Array<T>** , in **TypeScript**, don't allow for additional parameters to be passed in and used as part of the filter condition.
**List<T>** solves this problem by providing a **where** method. This **where** method do allow for additional parameters to be passed in and used as part of the filter.
All standard **Array<T>** properties and methods are available on **List<T>**.

## General Use
Define interface for **<T>**
```typescript
interface Item { name: string };
```

Create **List<T>**
```typescript
let list = new List();
```

Create and Add data to **List<T>**
```typescript
let itemOne: Item = { name: "Name1" };
let itemTwo: Item = { name: "Name2" };
list.push(itemOne);
list.push(itemTwo);
```

Define filter **(T, ...arg):boolean**
```typescript
let filter = (item: Item, name: string) => item.name === name;
```

Filter **List<T>** using **where(filter, value)**
```typescript
let newList = list.where(filter, "Name1");
```

## Development
### Install Dev Dependencies
Below command only required for development.
```
npm install
npm run setup
```

### Unit Tests
After running below gulp task a html codecoverage report is made available in directory **./analysis/coverage/lcov-report**.
```
gulp test
```

### Static Code Analysis
After running below gulp task two reports are made available in directory **./analysis/complexity**.
The HTML version is located in the **report** subdirectory.

```
gulp analyse
```
Note: complexity analysis is just experimental