3.15.0 • Published 2 months ago

@arthurka/ts-utils v3.15.0

Weekly downloads
-
License
ISC
Repository
github
Last release
2 months ago

Usage

import { checkExactShape, ExactShape } from '@arthurka/ts-utils';

const tooFew = { name: 'Stefan' };
const exact = { name: 'Stefan', age: '31' };
const tooMany = { name: 'Stefan', age: '31', sex: 'male' };

const record: Record<string, string> = {};
type R = typeof record;
type Exact = typeof exact;
interface ExtendedRecord extends Exact, R {}
const extendedRecord: ExtendedRecord = {
  name: 'Stefan',
  age: '31',
  sex: 'male',
};

type Person = {
  name: string;
  age: string;
};


function savePerson<T extends Person>(e: ExactShape<Person, T>) {

}

savePerson(exact);
// @ts-expect-error
savePerson(tooFew);
// @ts-expect-error
savePerson(tooMany);
// @ts-expect-error
savePerson(record);
// @ts-expect-error
savePerson(extendedRecord);

function getPerson(): Person {
  const e = exact;
  // const e = tooFew;
  // const e = tooMany;
  // const e = record;
  // const e = extendedRecord;

  checkExactShape<Person>()(e);
  return e;
}

const person = getPerson();
console.info(person);
3.15.0

2 months ago

3.14.0

4 months ago

3.13.0

4 months ago

3.12.0

4 months ago

3.11.0

6 months ago

3.10.0

9 months ago

3.9.2

12 months ago

3.9.1

1 year ago

3.9.0

1 year ago

3.8.2

1 year ago

3.8.0

2 years ago

3.8.1

1 year ago

3.7.0

2 years ago

3.6.0

2 years ago

3.5.0

2 years ago

3.4.0

2 years ago

3.3.0

2 years ago

3.4.1

2 years ago

2.11.0

2 years ago

2.12.0

2 years ago

2.11.1

2 years ago

2.5.0

2 years ago

2.10.0

2 years ago

2.4.0

2 years ago

2.7.0

2 years ago

2.6.0

2 years ago

2.5.1

2 years ago

2.9.0

2 years ago

2.8.0

2 years ago

3.2.1

2 years ago

3.2.0

2 years ago

3.1.0

2 years ago

2.9.1

2 years ago

3.0.0

2 years ago

2.15.0

2 years ago

2.13.0

2 years ago

2.14.0

2 years ago

2.3.0

2 years ago

2.2.0

2 years ago

1.8.0

2 years ago

2.1.1

2 years ago

2.0.0-beta.2

2 years ago

2.0.0-beta.1

2 years ago

2.1.0

2 years ago

2.0.0

2 years ago

2.0.0-beta.3

2 years ago

1.7.0

3 years ago

1.6.1

3 years ago

1.6.0

3 years ago

1.5.0

3 years ago

1.4.1

3 years ago

1.2.0

3 years ago

1.4.0

3 years ago

1.3.0

3 years ago

1.1.1

3 years ago

1.1.0

3 years ago

1.0.0

3 years ago