我有以下功能
function complete<T>(result?: T): void {
}
我想为
result
添加一个默认值:
function complete(result = null): void {
}
在这种情况下
T
被推断为 null
。以我可以打电话的方式
complete() // result: T = null
或
complete(valueOfSomeType) // result: T = SomeType
我试过了
function complete<T = null>(id: string, result: T = null): void {
}
但我收到错误消息
Type 'null' is not assignable to type 'T'.
'T' could be instantiated with an arbitrary type which could be unrelated to 'null'.ts(2322)
这很有意义
complete<SomeType>()
我该如何解决这个问题?
也许
function complete<T>(result: T = null as T): void { }
可以解决编译错误。
您可以重载您的函数以接受具有提供的泛型类型或没有参数和默认值的参数
null
:
function complete<T>(result: T): void
function complete(): void
function complete<T>(result: T | null = null): void {
}