mattermost-mobile/app/utils/types.ts
Daniel Espino García 732b17a75c
Add post props validation (#8323)
* Validate props

* Add calls changes and fix attachments

* Address feedback
2024-11-28 15:59:30 +01:00

42 lines
1.1 KiB
TypeScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
export function isArrayOf<T>(v: unknown, check: (e: unknown) => boolean): v is T[] {
if (!Array.isArray(v)) {
return false;
}
return v.every(check);
}
export function isStringArray(v: unknown): v is string[] {
return isArrayOf(v, (e) => typeof e === 'string');
}
export function isRecordOf<T>(v: unknown, check: (e: unknown) => boolean): v is Record<string, T> {
if (typeof v !== 'object' || !v) {
return false;
}
if (!(Object.keys(v).every((k) => typeof k === 'string'))) {
return false;
}
if (!(Object.values(v).every(check))) {
return false;
}
return true;
}
export function ensureString(v: unknown): string {
return typeof v === 'string' ? v : '';
}
export function ensureNumber(v: unknown): number {
return typeof v === 'number' ? v : 0;
}
export function secureGetFromRecord<T>(v: Record<string, T> | undefined, key: string) {
return typeof v === 'object' && v && Object.prototype.hasOwnProperty.call(v, key) ? v[key] : undefined;
}