typescript 如何使用泛型[duplicate]为函数添加默认值

9rbhqvlz  于 2022-12-24  发布在  TypeScript
关注(0)|答案(2)|浏览(150)

此问题在此处已有答案

Type '{}' is not assignable to type 'T'(1个答案)
昨天关门了。
我有以下函数
第一个月
但我得到的错误

'{}' is assignable to the constraint of type 'T', but 'T' could be instantiated with a different subtype of constraint 'Record<any, any>'

我需要能够传递任何对象,如果不传递,则使用空对象调用函数

epggiuax

epggiuax1#

不知道你在这里想做什么,但我有一些类似的东西可以使用。问题是T是泛型的,编译器不能猜测它的类型。

const myCustomMapping: { [requestId: string]: { status: 
string, fulfilled: boolean} } = {
   '1234-1234-1234-1423': { status: 'OK', fulfilled: true}

}

k5ifujac

k5ifujac2#

问题来自arg?: T = {},其中{}不能分配给扩展Record〈any,any〉测试
一种解决方案是在函数声明之前定义一个Record<any, any>变量,并将其用作arg的默认值

const defaultValue: Record<any, any> = {};
const run = <T extends Record<any, any>>(arg: T = defaultValue) => {};

相关问题