假设我有两种类型的对象正在传递到实用程序函数中,类型是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;
}