@happy-table/vue3
Version:
A high-performance Vue 3 table component for B2B systems with TypeScript support
75 lines (74 loc) • 2.47 kB
TypeScript
import { TableRow } from '../types/table';
/**
* 数值范围接口
*/
export interface NumericRange {
min: number;
max: number;
avg: number;
}
/**
* 数值统计接口
*/
export interface NumericStats extends NumericRange {
count: number;
sum: number;
median: number;
std: number;
}
/**
* 数值解析选项
*/
export interface NumericParseOptions {
/** 是否严格模式,严格模式下不会尝试从字符串中提取数字 */
strict?: boolean;
/** 自定义货币符号和分隔符的正则表达式 */
currencyPattern?: RegExp;
/** 是否包含空值在统计中 */
includeNulls?: boolean;
}
/**
* 解析数值 - 改进版本,支持货币符号和千位分隔符
*/
export declare function parseNumericValue(value: unknown, options?: NumericParseOptions): number | null;
/**
* 从表格数据中提取指定列的所有数值
*/
export declare function extractNumericValues(data: TableRow[], columnKey: string, options?: NumericParseOptions): number[];
/**
* 计算数值范围 (最小值、最大值、平均值)
*/
export declare function calculateNumericRange(data: TableRow[], columnKey: string, options?: NumericParseOptions): NumericRange;
/**
* 计算详细的数值统计信息
*/
export declare function calculateNumericStats(data: TableRow[], columnKey: string, options?: NumericParseOptions): NumericStats;
/**
* 检查列是否包含数值数据
*/
export declare function isNumericColumn(data: TableRow[], columnKey: string, threshold?: number, options?: NumericParseOptions): boolean;
/**
* 格式化数值,支持精度控制
*/
export declare function formatNumericValue(value: number, precision?: number, locale?: string): string;
/**
* 基于数值分布创建桶(用于直方图等)
*/
export declare function createNumericBuckets(data: TableRow[], columnKey: string, bucketCount?: number, options?: NumericParseOptions): Array<{
min: number;
max: number;
count: number;
values: number[];
}>;
/**
* 获取数值的百分位数
*/
export declare function getPercentile(data: TableRow[], columnKey: string, percentile: number, options?: NumericParseOptions): number | null;
/**
* 检测和移除数值异常值(基于四分位数范围)
*/
export declare function detectOutliers(data: TableRow[], columnKey: string, factor?: number, options?: NumericParseOptions): {
outliers: number[];
cleaned: number[];
indices: number[];
};