我试图将默认值应用于一个泛型。但是每当没有提供泛型时,该泛型就会默认为给定参数的值。我想防止这种情况发生。这里有一个非常简单的例子:
type Data = Record<string, any>
const computeData = <D extends Data = {}>(input: D): D => {
// Does some stuff to input
return input;
}
const res = computeData<{ name: string }>({ name: 'john' })
在这种情况下,“res”的类型是预期的
{ name: string }
。但是如果没有提供泛型参数,我需要将其默认为{}
,这是作为泛型参数默认值的类型。const computeData = <D extends Data = {}>(input: D): D => {
// Does some stuff to input
return input;
}
const res = computeData({ name: 'john' })
为了举例,我简化了这段代码。在这个示例的上下文中,这有点无意义。
编辑: 实际用例是一个网络模拟器,让用户添加对象以模拟graphql请求。我想给他们提供提供解析器类型的选项。但是,如果他们没有提供类型,则会从传递的初始数据中进行推断-我想避免这种情况。
{name: string}
:https://www.typescriptlang.org/play?#code/C4TwDgpgBAIghsOUC8UBKEDGB7ATgEwB4BnYXASwDsBzAGijkpAD4AoVnS0qHAWzACuwCPEQoohGFAgAPYZXzFYCJKgDeAX2YAKKoOAAuWAEojU5MyhrWUKAHo7sbBCXFsvaKQEAzb1GDYUHpCNlC4EMACuJRBlPoA3Kwa7Jzc4cQAjOJ8+iIqhGpQlHAeRqQUNFBa2oXFpVAA5ABW2AAWlA1VxhzYXMBhLgBM2e65onA1RSUQRs1tHV2sQA - tevemadar