我有一个如下所示的函数:
function getFirstDefined(...values: any) {
for (let value of values) {
if (!!value) {
return value;
}
}
return undefined;
}
它基本上获取参数列表中的第一个非未定义值并返回它。
问题是我必须向它添加类型,并且我希望它有一个基于传递给方法的参数类型的动态联合类型。
例如:
const var1: string = "Hello world!";
const var2: number;
const var3: boolean = false;
// Should have return type: string | number | boolean | undefined
getFirstDefined(var1, var2, var3);
我尝试这样做:
function getFirstDefined<T extends any>(...values: T[]): T | undefined {
for (let value of values) {
if (!!value) {
return value;
}
}
return undefined;
}
但它“锁定”了函数并且只允许相同类型的值。
const var1: string = "Hello world!";
const var2: number;
const var3: boolean = false;
// Error: var2 and var3 are not strings
getFirstDefined(var1, var2);
可以做这样的事情吗?
因与 OpenAI 合作而被删除。我的帐户很可能会被删除,这是我的意图。