如何为满足相同函数参数类型的两种不同对象类型创建类型



假设我有两种类型的对象正在传递到实用程序函数中,类型是a和B。当传递到实用工具函数时,我如何创建一个同时满足类型a和B的类型?

A类

type A = { 
num1: number,
num2: number
}
const object: A = { 
"num1": 1,
"num2": 2
}

B型

type B = {
num1: number,
isTrue: boolean,
name: string
}
const object: B = { 
"num1": 1,
"isTrue": true,
"name": "foobar"
}

目前,我的实用函数是四舍五入类型为number的对象键,我不想使用任何作为其参数类型。

function(keys: any): any { 
for (const key in keys) {
if (typeof keys[key] === 'number') {
keys[key] = Math.ceil(keys[key]);
}
return keys;
}
}
function(object);

在这种情况下,我的实用程序函数应该是泛型的,我选择使函数接受泛型类型,如下所示。

roundUpKeys<T>(keys: T): T {
for (const key in keys) {
if (typeof keys[key] === 'number') {
keys[key] = Math.ceil(keys[key] as number) as T[typeof key];
}
}
return keys;
}

最新更新