From 72a1743d757e5a013f956863d8139e3ae9231164 Mon Sep 17 00:00:00 2001 From: mol Date: Tue, 11 Jun 2024 08:58:38 +0800 Subject: [PATCH] ts and assignPropValue --- src/js/assignPropValue.ts | 22 ++++++++++++++++++++++ src/js/floatAdd.ts | 4 ++-- src/ts/{type.ts => ValueOf.ts} | 2 -- src/ts/WithId.ts | 2 ++ src/ts/handle.ts | 16 ++++++++++++++++ src/uni-app/rpx2px.ts | 14 +++++++------- 6 files changed, 49 insertions(+), 11 deletions(-) create mode 100644 src/js/assignPropValue.ts rename src/ts/{type.ts => ValueOf.ts} (75%) create mode 100644 src/ts/WithId.ts create mode 100644 src/ts/handle.ts diff --git a/src/js/assignPropValue.ts b/src/js/assignPropValue.ts new file mode 100644 index 0000000..8f49fba --- /dev/null +++ b/src/js/assignPropValue.ts @@ -0,0 +1,22 @@ +/** + * 给列表根据每一项prop属性与给定的数据组合带有数据的列表 + * @param list 带有prop属性的列表 + * @param data 数据 + * @param addToLabel 是否将数据加到 label 上 + * @returns 返回处理后的列表 + */ +export function assignPropValue( + list: readonly (T & { prop: string; label: string })[], + data: Record, + addToLabel = false +) { + return list.map((item) => { + const { prop, label, ...restField } = item; + const count = data[prop]; + return { + ...restField, + label: addToLabel ? `${label}(${count})` : label, + count, + }; + }); +} diff --git a/src/js/floatAdd.ts b/src/js/floatAdd.ts index 628506a..03bb2d3 100644 --- a/src/js/floatAdd.ts +++ b/src/js/floatAdd.ts @@ -7,7 +7,7 @@ import { isNumber } from "lodash-es"; * @returns 相加之和 * @description 使用两个数中小数点后位数较长的作为基数,抹平两个数的小数点,整数相加之后再除以基数,还原小数点。注意整体数值的位数不能超过最大整数范围 */ -export const floatAdd = (num1: number, num2: number) => { +export function floatAdd(num1: number, num2: number) { if (!isNumber(num1) || !isNumber(num2)) return NaN; let baseNum1: number; let baseNum2: number; @@ -24,4 +24,4 @@ export const floatAdd = (num1: number, num2: number) => { const baseNum = Math.pow(10, Math.max(baseNum1, baseNum2)); const result = ((num1 * baseNum + num2 * baseNum) / baseNum).toFixed(2); return +result; -}; +} diff --git a/src/ts/type.ts b/src/ts/ValueOf.ts similarity index 75% rename from src/ts/type.ts rename to src/ts/ValueOf.ts index f2ab6e5..d184aa7 100644 --- a/src/ts/type.ts +++ b/src/ts/ValueOf.ts @@ -1,9 +1,7 @@ // ValueOf 将对象类型转换成值的枚举值 -// keyof 操作符,遍历对象的key export type ValueOf = T[keyof T]; export const enum1 = { AAA: "aaa", BBB: "bbb", } as const; -// typeof 提取类型 export type TEnum1 = ValueOf; diff --git a/src/ts/WithId.ts b/src/ts/WithId.ts new file mode 100644 index 0000000..4c67efb --- /dev/null +++ b/src/ts/WithId.ts @@ -0,0 +1,2 @@ +// 添加id +export type WithId = T & { id: P }; \ No newline at end of file diff --git a/src/ts/handle.ts b/src/ts/handle.ts new file mode 100644 index 0000000..44cce55 --- /dev/null +++ b/src/ts/handle.ts @@ -0,0 +1,16 @@ +// keyof 操作符,遍历对象的key +export type keys = keyof T; + +const a = { a: 1, b: 2, c: 3 }; + +// typeof 提取类型 +export type Ta = keys; + +// Omit 去除某一项 +export type Ta2 = Omit; + +// Pick 选择某一项 +export type Ta3 = Pick; + +// & 添加 +export type Ta4 = Ta3 & { d: string }; diff --git a/src/uni-app/rpx2px.ts b/src/uni-app/rpx2px.ts index c405204..6b3a7ec 100644 --- a/src/uni-app/rpx2px.ts +++ b/src/uni-app/rpx2px.ts @@ -1,8 +1,8 @@ -import { isNumber } from 'lodash-es'; +import { isNumber } from "lodash-es"; -export const rpx2px = (rpx) => { - if (!isNumber(rpx)) return 0; - const screenWidth = uni.getSystemInfoSync().screenWidth; - const result = (screenWidth * rpx) / 750 - return result; - } \ No newline at end of file +export function rpx2px(rpx: number) { + if (!isNumber(rpx)) return 0; + const screenWidth = uni.getSystemInfoSync().screenWidth; + const result = (screenWidth * rpx) / 750; + return result; +}