svelte-ux
Version:
- Increment version in `package.json` and commit as `Version bump to x.y.z` - `npm run publish`
24 lines (23 loc) • 1.14 kB
JavaScript
// https://basarat.gitbooks.io/typescript/docs/types/never.html#use-case-exhaustive-checks
// https://www.typescriptlang.org/docs/handbook/basic-types.html#never
export function fail(message) {
throw new Error(message);
}
// Get keys of object (strongly-typed)
// Reason Object.keys() isn't like this by default due to runtime properties: https://github.com/Microsoft/TypeScript/pull/12253#issuecomment-263132208
export function keys(o) {
return Object.keys(o);
}
// export const keys = Object.keys as <T>(obj: T) => (Extract<keyof T, string>)[];
// Get entries (array of [key, value] arrays) of object (strongly-typed)
export function entries(o) {
return Object.entries(o); // TODO: Improve based on key/value pair - https://stackoverflow.com/questions/60141960/typescript-key-value-relation-preserving-object-entries-type
}
// https://github.com/Microsoft/TypeScript/issues/17198#issuecomment-315400819
export function enumKeys(E) {
return Object.keys(E).filter((k) => typeof E[k] === 'number'); // ["A", "B"]
}
export function enumValues(E) {
const keys = enumKeys(E);
return keys.map((k) => E[k]); // [0, 1]
}