【发布时间】:2021-11-28 10:34:41
【问题描述】:
我正在尝试在 TypeScript 中实现一个函数,其返回类型由传递给函数的第二个参数确定。
例如,
const a = ifNotEmpty(var1, "hello"); //a's type should be string
const b = ifNotEmpty(var2, [1, 2]); //b's type should be number[]
但是,相反,我得到 a 的类型为“hello”,b 的类型为 [1, 2]。两种常量类型,硬编码为 "hello" 和 [1,2] 而不是 "string" 或 "number[]";
如您所见,a 的类型是“真”硬编码,而不是布尔值。有没有办法推断第二个参数的类型并将该类型作为函数的返回类型返回,所以 a 的类型将是“boolean”而不是“true”?
这是功能,我试图做的:
const ifNotEmpty = <U>(value: any, defaultValue: U): U => {
return value ?? defaultValue;
};
【问题讨论】:
标签: javascript typescript typescript-generics