Chore: fix some typings in @grafana/data (#60009)

fix some typings in @grafana/data
This commit is contained in:
Ashley Harrison
2022-12-16 09:59:00 +00:00
committed by GitHub
parent 2e3c4a7626
commit 9bbc2c4cbb
20 changed files with 139 additions and 192 deletions
@@ -6,7 +6,7 @@ import { vectorToArray } from '../vector/vectorToArray';
import { guessFieldTypeFromNameAndValue, toDataFrameDTO } from './processDataFrame';
/** @public */
export type ValueConverter<T = any> = (val: any) => T;
export type ValueConverter<T = any> = (val: unknown) => T;
const NOOP: ValueConverter = (v) => v;
@@ -67,7 +67,7 @@ export class ArrayDataFrame<T = any> extends FunctionalVector<T> implements Data
/**
* Add a field for each property in the object. This will guess the type
*/
setFieldsFromObject(obj: any) {
setFieldsFromObject(obj: Record<string, unknown>) {
this.fields = Object.keys(obj).map((name) => {
return {
name,
@@ -111,7 +111,7 @@ export interface FieldValueEntityLookup {
NegInf?: number[];
}
const ENTITY_MAP: Record<keyof FieldValueEntityLookup, any> = {
const ENTITY_MAP: Record<keyof FieldValueEntityLookup, number | undefined> = {
Inf: Infinity,
NegInf: -Infinity,
Undef: undefined,
@@ -13,7 +13,7 @@ export type MutableField<T = any> = Field<T, MutableVector<T>>;
type MutableVectorCreator = (buffer?: any[]) => MutableVector;
export const MISSING_VALUE: any = undefined; // Treated as connected in new graph panel
export const MISSING_VALUE = undefined; // Treated as connected in new graph panel
export class MutableDataFrame<T = any> extends FunctionalVector<T> implements DataFrame, MutableVector<T> {
name?: string;
@@ -67,7 +67,7 @@ export class MutableDataFrame<T = any> extends FunctionalVector<T> implements Da
return this.first.length;
}
addFieldFor(value: any, name?: string): MutableField {
addFieldFor(value: unknown, name?: string): MutableField {
return this.addField({
name: name || '', // Will be filled in
type: guessFieldTypeFromValue(value),
@@ -79,7 +79,7 @@ export class MutableDataFrame<T = any> extends FunctionalVector<T> implements Da
if (f.values) {
if (Array.isArray(f.values)) {
buffer = f.values as any[];
buffer = f.values;
} else {
buffer = (f.values as Vector).toArray();
}
@@ -181,7 +181,7 @@ export class MutableDataFrame<T = any> extends FunctionalVector<T> implements Da
/**
* This will add each value to the corresponding column
*/
appendRow(row: any[]) {
appendRow(row: unknown[]) {
// Add any extra columns
for (let i = this.fields.length; i < row.length; i++) {
this.addField({
@@ -233,7 +233,7 @@ export class MutableDataFrame<T = any> extends FunctionalVector<T> implements Da
set(index: number, value: T) {
if (index > this.length) {
throw new Error('Unable ot set value beyond current length');
throw new Error('Unable to set value beyond current length');
}
const obj = (value as any) || {};
@@ -43,11 +43,14 @@ export function compareDataFrameStructures(a: DataFrame, b: DataFrame, skipConfi
return false;
}
const cfgA = fA.config as any;
const cfgB = fB.config as any;
const cfgA = fA.config;
const cfgB = fB.config;
let aKeys = Object.keys(cfgA);
let bKeys = Object.keys(cfgB);
// need to type assert on the object keys here
// see e.g. https://github.com/Microsoft/TypeScript/issues/12870
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
let aKeys = Object.keys(cfgA) as Array<keyof typeof cfgA>;
let bKeys = Object.keys(cfgB) as Array<keyof typeof cfgB>;
if (aKeys.length !== bKeys.length) {
return false;
@@ -180,7 +180,7 @@ const NUMBER = /^\s*(-?(\d*\.?\d+|\d+\.?\d*)(e[-+]?\d+)?|NAN)\s*$/i;
/**
* Given a name and value, this will pick a reasonable field type
*/
export function guessFieldTypeFromNameAndValue(name: string, v: any): FieldType {
export function guessFieldTypeFromNameAndValue(name: string, v: unknown): FieldType {
if (name) {
name = name.toLowerCase();
if (name === 'date' || name === 'time') {
@@ -193,7 +193,7 @@ export function guessFieldTypeFromNameAndValue(name: string, v: any): FieldType
/**
* Check the field type to see what the contents are
*/
export function getFieldTypeFromValue(v: any): FieldType {
export function getFieldTypeFromValue(v: unknown): FieldType {
if (v instanceof Date || isDateTime(v)) {
return FieldType.time;
}
@@ -218,7 +218,7 @@ export function getFieldTypeFromValue(v: any): FieldType {
*
* NOTE: this is will try to see if string values can be mapped to other types (like number)
*/
export function guessFieldTypeFromValue(v: any): FieldType {
export function guessFieldTypeFromValue(v: unknown): FieldType {
if (v instanceof Date || isDateTime(v)) {
return FieldType.time;
}
@@ -299,9 +299,9 @@ export const guessFieldTypes = (series: DataFrame, guessDefined = false): DataFr
return series;
};
export const isTableData = (data: any): data is DataFrame => data && data.hasOwnProperty('columns');
export const isTableData = (data: unknown): data is DataFrame => Boolean(data && data.hasOwnProperty('columns'));
export const isDataFrame = (data: any): data is DataFrame => data && data.hasOwnProperty('fields');
export const isDataFrame = (data: unknown): data is DataFrame => Boolean(data && data.hasOwnProperty('fields'));
/**
* Inspect any object and return the results as a DataFrame